乘法代码:
inline ll mul(ll a, ll b, const ll M){
ll d =a*(long double)b/M+0.5;
ll ret =a*b-d*M;
if(ret < 0)
ret +=M;
return ret;
}
我将代码第二行的
ll d =a*(long double)b/M+0.5;
换成
ll d =floor(a*(long double)b/M+0.5);
就过不了了,大概率是因运算出错卡死循环
可以确定 a*(long double)b
是大于零的
求助qaq