本文共 998 字,大约阅读时间需要 3 分钟。
主要的思想是来自一个公式:a*b%c = (a%c) *(b%c) %c
基本概念及思想
递归算法代码如下
1 long mod(long a,long b,long c) 2 { 3 long ans; 4 if(!b)return 1; 5 else if(b==1)return a%c; 6 else ans = mod(a,b/2,c); 7 ans = (ans*ans)%c; 8 if(b&1)ans = (ans*(a%c))%c; 9 return ans;10 }
另一种高效的算法是用循环代替递归算法
1 long mod_loop(long a,long b,long c) 2 { 3 long ret=1,tem=a; 4 while(b) 5 { 6 if(b&1) ret = ret*tem%c; 7 tem = tem*tem%c; 8 b>>=1; 9 }10 return ret;11 }
本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/archive/2012/04/24/2468656.html ,如需转载请自行联系原作者