要求n^n的最右边一位,由观察可知,这一位的结果只与n的个位上的数字有关
结果为((n)^n),线性暴力求解超时了,用二进制加速
代码:
#include<iostream>
#include<cstdio>
using namespace std;
int pow(int p,int n)
{
int a=p,ret=1;
while(n)
{
if(n&1)
ret=ret*a;
a=a*a;
n>>=1;
}
return ret;
}
int main()
{
int i,n,ans;
scanf("%d",&i);
while(i--)
{
scanf("%d",&n);
cout<<pow(n,n)<<endl;
}
return 0;
}