这个题其实是数论里边一个小知识点。N^N的个位数其实就是(N%10)^N的个位数。不妨设为a = N%10,结果就是求a^N的个位了。
step1: 如果(N%2 == 0)那么结果就等于[(a*a)%10]^(N/2)
step2: 否则,结果就等于(a%10)*[(a*a)^(N/2)]的结果了。如果N<1,结束。否则返step1。
代码很简单:#include<iostream>
using namespace std;
int judge(int n)
{
int k=n,a=n,b=1;
a %= 10;
while(k > 1)
{
if(k%2)
{
b *= a;
b %= 10;
--k;
}
else
{
a *= a;
a %= 10;
k /= 2;
}
}
a *= b;
a %= 10;
return a;
}
int main()
{
int T,n;
cin>>T;
while(T--)
{
cin>>n;
cout<<judge(n)<<endl;
}
return 0;
}