快速冪

int quick(int a,int b,int c)
{
	int ans=1;   //記錄結果
	a=a%c;   //預處理,使得a處於c的數據範圍之下
	while(b!=0)
	{
		if(b&1) ans=(ans*a)%c;   //如果b的二進制位不是0,那麼我們的結果是要參與運算的
		b>>=1;    //二進制的移位操作,相當於每次除以2,用二進制看,就是我們不斷的遍歷b的二進制位
		a=(a*a)%c;   //不斷的加倍
	}
	return ans;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章