光速乘
前言
不知道有没有错啊...
正文
原理
首先我们知道\(long double\)可以保存比\(longlong\)更多的有效位数字。
而因为我们在某些时刻会在乘法的过程中短暂爆\(longlong\),这样的话我们就需要快速乘。
但是一般的快速乘是跟快速幂一个原理的,这会导致一次乘法非常慢。
于是就有了利用\(longdouble\)实现的光速乘了。
代码
ll MOD=1e9+7;
ll mul(ll x,ll y,ll MOD){return (x*y-(long long) ((long double) x/MOD*y)*MOD+MOD)%MOD;}
总结
还不知道会不会错,所以请慎用。