龟速乘其实本质我认为跟快速幂一样,都是利用二进制而已;
龟速乘
//a*b%p
ll q_mul(ll a,ll b,ll p){
ll ret = 0;
ll base = a;
while(b){
if(b&1){
ret+=base;
ret%=p;
}
base+=base;
base%=p;
b>>=1;
}
return ret;
}
快速幂
//x^y%mod
ll qpow(ll x,ll y){
ll ret = 1;
ll base = x;
while(y){
if(y&1){
ret*=base;
ret%=mod;
}
base*=base;
base%=mod;
y>>=1;
}
return ret;
}
可以对比一下,不能说一模一样,只能说完全一致(雾