NTT

质数模数 NTT

  • 普通 FFT 有一个很大缺点就是精度和随带的速度

  • 因为一直是在复数域,大量的 double 运算,精度的损失太大了,所以出现了 NTT (快速数论变换)

  • NTT 的思想和 FFT 的思想是一样的,只是将原根换成了一个替代品关于模数的原根

  • 倒数的地方就是原根关于模数的逆元

  • P3803 【模板】多项式乘法(FFT)

  • 参考代码

任意模数 NTT

  • P4245 【模板】任意模数多项式乘法 为例

  • 最大值不超过 p2×max(n,m)1023 ,那么拿三个模数来做就差不多了

  • 我们拿三个模数,每个都做一边 NTT ,那么最后对于每一项就可以用 excrt 来解

  • 要注意的是 excrt 不能直接用,因为模数的 lcm 会爆,这个时候需要手推式子

  • 比如 xb1(moda1) ,那么 x=a1x+b1 ,将这个带入下一个式子的左边,迭代下去即可

  • 最终会得到 AnsX(moda1a2...) ,因为 Ans<a1a2... ,所以 Ans=X ,那么求 X 的过程中就可以对原题目要求的质数取模了

  • 参考代码

posted @   Kzos_017  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示