防爆乘法

讲解&代码

1.龟速乘

类似快速幂的思想,直接搞即可

LL gsc(LL x,LL y,LL MOD)//~~光~~龟速乘
{
	LL ret = 0;
	while(y){if(y & 1) ret = (ret + x) % MOD;x = (x << 1) % MOD;y >>= 1;}
	return ret;
}

2.光速乘

LL gsc(LL x,LL y,LL MOD)
{
	LL ret = x*y - (LL)((long double)x/MOD*y+0.5)*MOD;
	return (ret%MOD+MOD)%MOD;
} 

warning:虽然我还没搞清楚,但是似乎有符号整形自然溢出是UB

posted @ 2020-09-03 21:29  皮皮刘  阅读(154)  评论(0编辑  收藏  举报