光速乘

前言

不知道有没有错啊...

正文

原理

首先我们知道\(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;}

总结

还不知道会不会错,所以请慎用。

posted @ 2021-07-20 21:31  __Anchor  阅读(125)  评论(0编辑  收藏  举报