快速冪

原文鏈接:https://blog.csdn.net/Harington/article/details/87602682

用於計算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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章