rt,网上这样的光速乘代码
long long mul(long long a, long long b) {
long long rt = a *b - ((long long)((long double)a / mod * b + 0.5)) * mod;
return rt < 0 ? rt + mod : rt;
}
在同样的溢出次数下,正确性是可以保证的
但是,如果极端情况
前面的a∗b>LLONG_MAX,后面那部分却没有超出
a∗b就会减少LLONG_MAX+1
我们得到的差值是否会变为
原差值−LLONG_MAX−1
那这能一样吗?