警示后人
查看原帖
警示后人
906856
A2_Zenith楼主2023/10/31 21:40
int qpow(int a,int b,int p){
	int ans=1;
	bool flag=0;//1.扩展欧拉定理分讨需要的tag。注意这题不能像Power Tower一样取模时暴力加p,稍不留神就会炸ll!!
	if(a>=p){
		flag=1;
		a%=p;
	}
  //2.不写这个 100->60
	while(b>0){
		if(b&1){
			ans=ans*a;
			if(ans>=p){
				flag=1;
				ans=ans%p;//3.分讨tag。
			}
		}
		a=a*a;
		if(a>=p){
			flag=1;
			a=a%p;//分讨tag。
		}
		b>>=1;
	}
  //注意最后超过模数后要加p
	return flag?ans%p+p:ans;
}
2023/10/31 21:40
加载中...