解题代码如下,时间复杂度为O(n)的必然超时,只需要计算N的最后一位数(设为a)的N次方的尾数即可,计算a的N次方时得到的尾数有周期T,例如
对于数字0~9, 它们的N次方,我们只看最后一个数字:
0^1=0; 0^2=0; 循环周期T=1;
1^1=1; 1^2=1; 循环周期T=1;
2^1=2; 2^2=4; 2^3=8; 2^4=6 2^5=2; 循环周期T=4;
3^1=3; 3^2=9; 3^3=7; 3^4=1;3^5=3; 循环周期T=4;
4^1=4; 4^2=6; 4^3=4; 循环周期T=2;
#include<iostream>
using namespace std;
int main()
{
int T,a,b,n;
cin>>T;
while(T--)
{
cin>>n;
int temp,result=1;
a=n%10;
b=n%4+4;
while(b--)
{
result*=a;
result=result%10;
}
cout<<result<<endl;
}
return 0;
}
这样就能通过了。