FastDivFastMod_杂项
FastDiv/FastMod
假:
原理:
1 | inv[i]=-1ull/i+1,a/b==(i128)a*inv[b]>>64,a%b==a-a/b*b |
所以在输入模数的情况下可以加速取模。
1 | struct FastMod { |
得到这个做法的时候很欣喜,殊不知这是假的,用它处理阶乘的逆元 就会出现负数,经过群友分析该算法会将答案映射到 ,而正常的巴雷特模乘会映射到 ,所以该有的三目运算总是逃不掉的。
真:
1 | struct FastMod { |
另:如果没有乘法只有加法直接用 mod.red(x+=y) 更快。
评论
评论插件加载失败
正在加载评论插件