快速幂

 

用来计算 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 }

 

posted @ 2016-05-09 19:53  TechIsOnlyTool  阅读(63)  评论(0编辑  收藏  举报