用於計算a^b%m的快速算法
遞歸寫法:
typedef long long ll;
ll binaryPow(ll a, ll b, ll m){
if(b == 0)
return 1;
else if(b&1)
return a * binaryPow(a, b - 1, m) % m;
else{
ll num = binaryPow(a, b/2, m) % m; //優化
return num * num % m;// 不直接寫成return binaryPow(a, b/2, m) * binaryPow(a, b/2, m)
}
}
迭代寫法:
typedef long long ll;
const ll mod=1e9+7;
ll _power(ll a, int b)//計算a^b;
{
ll ans=1, res=a;
while(b){
if(b&1) //判斷b是否爲奇數
ans=ans*res%mod;
res=res*res%mod;
b>>=1;
}
return ans%mod;
}