1.快速幂(位运算)
View Code
#include<stdio.h> int pow(int a,int b) { int r=1; int base=a; while(b!=0) { if(b&1) r*=base; base*=base; b>>=1; } return r; } int main() { int m;int n; while(scanf("%d%d",&m,&n)!=EOF) { printf("%d\n",pow(m,n)); } return 0; }
2.快速幂取模
View Code
__int64 exp_mod(__int64 a, __int64 n, __int64 b) { __int64 t; if(n==0) return 1%b; if(n==1) return a%b; t=exp_mod(a,n/2,b); t=t*t%b; if((n&1)==1) t=t*a%b; return t; }