当指数大于1时;
若为 偶数 则将指数除以2,底数平方
若为 奇数 则先提出一个为底数的系数(可直接把该系数乘进ans中),所以指数减1,然后再按照 偶数 的办法做
不断迭代下去,当指数为1时,则直接得出答案
若要取模 则每一步运算都取模即可
#include<stdio.h>
int modpow(int a, int b, int c)
{
int ans = 1;
while(b>0)
{
if (b & 1) ans = ans * a% c;
a = a * a % c;
b >>= 1; //等价于b=b/2;
}
return ans;
}
一个简单的快速幂,研究了一下午,,,心累,,,不过很有成就感!!!