这是acm数论部分经常用到的一个知识点。
基本题意 求a的b次方,对c去余的值;
我们学习c语言的常规思路算出a的b次方,在%c即可。但在acm不能通过的。 //时间超时,数值过大
出入acm的思路则是每次a*a时都进行一个%c运算,缩小值。这样也是不能通过的 //时间超时
这是我们用到二分快速幂函
记住即可
int PowerMod(int a, int b, int c)
{
int ans = 1;
a = a % c;
while(b>0)
{
if(b % 2 = = 1)
ans = (ans * a) % c;
b = b/2;
a = (a * a) % c;
}
return ans;
}