typedef long long ll;
//非递归
ll quick(ll a,ll b){
ll s=1;
while(b > 0){
if( b&1 ) s *= a; //如果b不是2的倍数,即b二进制此位为1,s则*=a
b /= 2; //b往下一位二进制数走
a *= a; //b走往下一位,a同理*=a;
}
return s;
}
//递归
ll quick(ll a,ll b){
if(b==0) return 1;
if(b==1) return a;
ll s=quick(a,b/2);
if(b&1) return s*s*a;
else return s*s;
}
//与非递归类似;
//快速幂取模算法
//取模的一些公式
(a*b) % m = (a % m) * (b % m) % m
(a/b) % M = (a * b^(M-2)) % M; //费马小定理
(a+b) % M = (a % M+b % M) % M;
快速幂模版,(递归与非递归)
猜你喜欢
转载自blog.csdn.net/no_o_ac/article/details/81201318
今日推荐
周排行