A^B mod C

来源:互联网 发布:第三届大数据产学研 编辑:程序博客网 时间:2024/05/01 09:43

1,

(a*b)%c=( (a%c)*(b%c) )%c;

2,二进制优化乘方:      防止b很大时超出时间限制(时间复杂度O(logb)).

令  s=b/2;  f=b%2;    则 aˆb=( (aˆs)ˆ2 ) * (aˆf).递归求解aˆs.

代码:

#include <stdio.h>int main(){int a,b,c,result=1;int digit[100];scanf("%d%d%d",&a,&b,&c);int i=0;while(b){digit[i++]=b%2;b>>=1;}for (--i;i>=0;--i){result=(result*result)%c;if (digit[i]){result=(a*result)%c;}}printf("%d/n",result);}
原创粉丝点击