一.普通快速幂:
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 }