快速幂

一.普通快速幂:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     int result=1;
 6     scanf("%d%d",&a,&b);
 7     while(b>0)
 8     {
 9         if(b%2==1)
10             result=((result%1000)*(a%1000))%1000;
11         a=((a%1000)*(a%1000))%1000;
12         b=b/2;
13     }
14     printf("%d",result);
15     return 0;
16 }

二.优化后的快速幂:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     int result=1;
 6     scanf("%d%d",&a,&b);
 7     while(b>0)
 8     {
 9         if(b&1)//利用位运算判断是否为奇数
10             result=((result%1000)*(a%1000))%1000;
11         a=((a%1000)*(a%1000))%1000;
12         b=b>>1;
13     }
14     printf("%d",result);
15     return 0;
16 }

 

上一篇:八皇后(dfs)


下一篇:for循环 es6