警示后人WA #15
查看原帖
警示后人WA #15
232205
little_kongbai楼主2022/4/23 17:14

最后一个点需要用快速乘,但快速乘遇到负数可能会有问题

快速乘遇到负数可能会陷入死循环,所以可以利用if特判定一下,如果b真为负数的话打上标记,令b=-b

	ll ksc(ll a,ll b,ll p){
		ll ans=0,t=1;
		if(b<0){b=-b;t=-1;}
		while(b){
			if(b&1)ans=(ans+a)%p;
			a=a+a%p;
			b>>=1;
		}
		return ans*t;
	}
2022/4/23 17:14
加载中...