hdu ACM Steps 1.2.6 Rightmost Digit
快速幂。
。。。我居然把快速幂都忘记了,重新复习一下。
首先底数为k次数e可以用二进制表示。
如果e的最后一位为0,那么 k^e = (k^2)^(e/2)
如果e的最后以为为0,那么 k^e = (k^2)^(e/2)*k
于是快速幂就复习完了。
#include<cstdio> const int mod = 10; int T,n; int power(int k,int e) { int res=1; while(e) { if(e&1) res=res*k%mod; k=k*k%mod; e>>=1; } return res; } int main() { scanf("%d",&T); while(T--) { scanf("%d",&n); printf("%d\n",power(n%mod,n)); } return 0; }

浙公网安备 33010602011771号