问题及代码:
/*
* Copyright (c)2015, 烟台大学计算机学院
* All rightsreserved.
* 文件名称: x.cpp
* 作者 : 李楠
* 完成日期: 2015年5月28日
* 版本号 : v1.0
* 问题描述: Given a positive integer N, you should output the most right digit of N^N.
* 输入描述: The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains a single positive integer N(1<=N<=1,000,000,000).
* 程序输出: For each test case, you should output the rightmost digit of N^N.
Sample Input
2
3
4
Sample Output
7
6
Hint
In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7.
In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6
*/
#include <iostream>
using namespace std;
int main()
{
int num;
int n,f,p,l;
cin>>num;
while(num--)
{
cin>>n;
f=n%10;
if(n%4==0)
{
n=4;
}
else
n=n%4;
l=1;//必须写在里面!!因为每次循环都要保证l在此处为1
for(int i=0;i<n;++i)
l=l*f;
p=l%10;
cout<<p<<endl;
}
return 0;
}
运行结果:
知识点总结:
一般我们想到的求最后一位的方法是最后一位相乘,但如果数据很大的时候求n^n就会超时了,所以一般这种大数据的题就需要找规律了
我们发现2^1 2 2^2 4 2^3 8 2^4 6 2^5 2 2^6 4
3^1 3 3^2 9 3^3 7 3^4 1 3^5 3 3^6 9
4^1 4 4^2 6 4^3 4 4^4 6 4^5 4 4^6 6
5^1 5 5^2 5 5^3 5 5^4 5 5^5 5 5^6 5
归纳以下可得任何数的n次幂的个位都有一个周期是4