快速幂
用来计算 An 利用之前的结果和二进制的特点简化计算。
1 #include<stdio.h> 2 int main () 3 { 4 long A,x,ans; 5 int n,i; 6 scanf("%d",&n); 7 i=0; 8 while (i<n && scanf("%ld",&A) != EOF) 9 { 10 11 ans = 1; 12 x = A; 13 while(x>0) 14 { 15 if(x&1)//if ((n&1) == 1) break;&是”按位与“运算,即n对应二进制末位为1,运算结果为1,否则为0。// n与0000 0000 0000 0001按位与(运算“与”就是若a和b均为1时,a&b=1,否则a&b=0),n&1的结果只有当n最后一位为1,那么答案才是1,否则答案为0 例如,假设n是个int,n=5; n & 1是:先将5转换成二进制0000 0000 0000 0101,1的二进制是0000 0000 0000 0001,n&1=1。
16 ans = ans * (A%10); 17 A = A * (A%10); 18 x >>= 1;//n >>= 1 就是n=n>>1 就是把n化成2进制码,然后向右位移一位 然后再赋值给n 19 } 20 printf("%d\n",ans%10); 21 i++; 22 } 23 return 0; 24 }