70,031
社区成员




我总结一下楼上各位的答案:
1.利用A*B mod M=((A mod M)*(B Mod M))Mod M;
2.利用Modular_Exponentation,把指数化为二进制计算。
两种算化都不会溢出。
int f(int m,int n){
int mul=m%n;
int r=1;
while(n){
if(n&1){r*=mul;r%=1000;}
mul*=mul;mul%=1000;
n>>=1;
}
return r;
}
unsigned result=1;
for(int i=0;i <n;i++){
result= (result%1000)*m;
printf("%8d\n", result);
}
int n= 20;
unsigned int m=7;
unsigned result=1;
for(int i=0;i <n;i++){
result= (result%1000)*m;
printf("%8d\n", result);
}