【模板篇】NTT和三模数NTT】的更多相关文章

之前写过FFT的笔记. 我们知道FFT是在复数域上进行的变换. 而且经过数学家的证明, DFT是复数域上唯一满足循环卷积性质的变换. 而我们在OI中, 经常遇到对xxxx取模的题目, 这就启发我们可不可以在模运算的意义下找一个这样的变换. 然后我们发现有个神奇的东西, 原根\(g\), 这东西在模意义下相当于单位复根\(-e^{\frac{2\pi i}{n}}\). 所以我们预处理一下\(g\)的幂和逆元, 然后改一下fft的代码就出现了快速数论变换ntt 懒得写了 直接上代码: void g…
题目链接 三模数\(NTT\): 就是多模数\(NTT\)最后\(CRT\)一下...下面两篇讲的都挺明白的. https://blog.csdn.net/kscla/article/details/79547242 https://blog.csdn.net/zhouyuheng2003/article/details/85561887 模数不是\(NTT\)模数,考虑用多个\(NTT\)模数分别卷积,最后\(CRT\)合并(由中国剩余定理,同余方程组在模\(M=\prod m_i\)的情况下…
题目:https://www.luogu.org/problemnew/show/P4245 用三模数NTT做,需要注意时间和细节: 注意各种地方要取模!传入 upt() 里面的数一定要不超过2倍 mod! 乘法会爆 long long 时用快速乘! 两次合并的模数,第一次是 (ll) p1*p2,第二次直接对题目的模数取模即可! 注意局部开 (ll)! 合并时用到的逆元每次都一样,所以要先处理好而不是现场快速幂算!! 然而为什么时间还是 Narh 的两倍! 一晚上的心血... 代码如下: #i…
题目:https://www.luogu.org/problemnew/show/P4245 三模数NTT: 大概是用3个模数分别做一遍,用中国剩余定理合并. 前两个合并起来变成一个 long long 的模数,再要和第三个合并的话就爆 long long ,所以可以用一种让两个模数的乘积不出现的方法:https://blog.csdn.net/qq_35950004/article/details/79477797 x*m1+a1 = -y*m2 + a2  <==>  x*m1+y*m2…
求两个多项式的卷积对任意数p取模 两个好记的FNT模数: 5*2^25+1 7*2^26+1 原根都为3 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<vector> #include<cstdio> #include<queue> #include<cmath> #incl…
题目背景 模板题,无背景 题目描述 给定 22 个多项式 F(x), G(x)F(x),G(x) ,请求出 F(x) * G(x)F(x)∗G(x) . 系数对 pp 取模,且不保证 pp 可以分解成 p = a \cdot 2^k + 1p=a⋅2k+1 之形式. 输入输出格式 输入格式: 输入共 33 行.第一行 33 个整数 n, m, pn,m,p ,分别表示 F(x), G(x)F(x),G(x) 的次数以及模数 pp .第二行为 n+1n+1 个整数, 第 ii 个整数 a_iai​…
这个题还有一些其他的做法,以后再补,先记一下三模数$NTT$的方法. 发现这个题不取模最大的答案不会超过$10^5 \times 10^9 \times 10^9 = 10^{23}$,也就是说我们可以取三个满足$NTT$性质的模数先算然后再合并起来. 比如三个模数可以分别取$998244353, 1004535809, 469762049$. 那么我们现在要做的就是合并三个同余方程: $$x \equiv a_1(\mod P_1)$$ $$x \equiv a_2(\mod P_2)$$ $…
三模数 NTT,感觉不是很难写 $?$ 代码借鉴的 https://www.cnblogs.com/Mychael/p/9297652.html code: #include <bits/stdc++.h> #define SIZE 400005 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; inline ll qpow(ll x,…
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 写在前面 一些约定 循环卷积 DFT卷积的本质 Bluestein's Algorithm 例题 分治FFT 例题 FFT的弱常数优化 复杂算式中减少FFT次数 例题 利用循环卷积 小范围暴力 例题 快速幂乘法次数的优化 FFT的强常数优化 DF…
经过两个月的咕咕,"多项式全家桶" 系列终于迎来了第三期--(雾) 上一篇:[知识总结]多项式全家桶(二)(ln和exp) 先膜拜(伏地膜)大恐龙的博客:任意模数 NTT (在页面右侧面板 "您想嘴谁" 中选择 "大恐龙" 就可以在页面左下角戳她哦) 首先务必先学会 NTT (如果不会,请看多项式全家桶(一)),并充分理解中国剩余定理-- 之前提到了,普通 NTT 的模数必须是一个质数,且这个质数中必须有一个足够大的 \(2\) 的幂作为因子.然…