- 2024-11-11FFT & NTT
FFT复数复数在极坐标上表示:\(z=r(\cos\theta+\textbfi\sin\theta)\),其中\(\arg(z)=\theta\)。复数相乘,模长相乘,辐角相加。单位根单位根模长为\(1\),其中\(\omega_{n}=\cos\dfrac{2\pi}n+\textbfi\sin\dfrac{2\pi}n\)。单位根性质:\(\omega^{k}_{n}=\omega^{a\b
- 2024-10-27NTT
NTT线性卷积定义:\[(f*g)[i]=\sum_{j=0}^{i}f[j]\cdotg[i-j]\]卷积定理:\[\mathcal{F}(f*g)=\mathcal{F}(f)\cdot\mathcal{F}(g)\]于是,求线性卷积可以转化为,先变换,再直接相乘,最后逆变换。注意:序列长度须变成N+M-1,对齐2^k。循环卷积(圆周卷积)一般用于两个等长序
- 2024-10-01浅谈 DFT、IDFT、NTT
DFT(离散傅里叶变换)多项式分治。最早可能是由高斯发现的多项式可以分治,但他的手稿并未作为论文发表。考虑多项式\(F(x)=a_0+a_1x^{1}+a_2x^{2}+\cdots+a_{n-1}x^{n-1}\)其中\(n=2^{k}\(k\geq0)\)。(任意多项式可以通过高位补\(0\)化为这个形式。)
- 2024-08-07NTT 学习笔记
NTT前置知识:FFTNTT,中文“快速数论变换”,是FFT在数论领域上的实现,比FFT更快,应用更广。对于FFT,因为其涉及到复数操作,对于某些需要取模的题不再适用。并且因为需要求正弦与余弦,使用时难以避免精度误差。这时就需要用到NTT来解决问题了。我们知道FFT的实现是在复平面上找
- 2024-07-17Crypto 2024 's Accepted papers
Acceptedpapers 已接受论文Thesepapersarelistedinorderofsubmission.这些论文按提交顺序排列。 Constant-RoundArgumentsforBatch-VerificationandBounded-SpaceComputationsfromOne-WayFunctions从单向函数进行批量验证和有界空间计算的常圆参数Noga
- 2024-06-22FFT & NTT 复习笔记
快速变换设原多项式为\(F(x)=\sum_{i\in[0,n)}a_ix^i\),其中\(n=2^k,k\in\mathbbZ^+\)。我们要求\(\foralli\in[0,n),\hata_i=F(t_i)\),其中\(t\)是一个长度为\(n\)且两两互不相同的序列。显然\(F\)可以被一组\(\hata,t\)唯一确定,即点值表示
- 2024-05-15多项式基本技术整理
FFT/NTT以\(\Theta(\mathsf{M}(n))=\Theta(n\logn)\)的复杂度,快速计算多项式在\(n\)个单位根处的点值,以及通过\(n\)个单位根处的点值还原多项式的算法。常用于计算多项式乘法。由于这个算法的原理在OI中是相当板的存在,就不在这里列出了。计算多项式乘法基本只需要
- 2024-05-09原根与 NTT
阶与原根阶若正整数\(m,\a\),满足\((a,m)=1\),则使\(a^n\equiv1\pmodm\)的最小正整数\(n\)称为\(a\)模\(m\)的阶,记作\(\delta_m(a)\)。\(\delta_7(1)=1,\\delta_7(2)=3,\\delta_7(3)=6\)。原根若\(\delta_m(a)=\varphi(m)\),则称\(a\)
- 2024-04-19NTT 的三次变八次优化
就是将NTT的域扩到复数。我不知道高斯整数的其他取模方式,所以巨慢/xk。而且没用。我们知道高斯整数的神秘取模方式,使得其结果的范数小于除数的一半。然而我们发现这个取模在整数下的结果仍然在整数取模的同余系中!好很有精神!我们选取\(g=3,mod=998244353\),我们只需要验证\(
- 2024-04-13FFT 与 NTT 学习笔记
【概念】点值:给定多项式\(f(x)=a_0+a_1x+\cdots+a_{n-1}x^{n-1}\)和\(x_1\simx_m\),求\(f(x_1),f(x_2),\dots,f(x_m)\)。(\(m=n\))求点值的算法一般是\(O(n^2)\)的,但对于特殊的多项式,可以做到更快。插值:给定\((x_0,y_0),(x_1,y_1),\dots,(x_{n-1},y_{n-1})\),其中\(x_0\s
- 2024-04-10【模板】任意模数多项式乘法:三模 NTT
前置知识https://www.cnblogs.com/caijianhong/p/template-crt.htmlhttps://www.cnblogs.com/caijianhong/p/template-fft.html题目描述任意模数多项式乘法solution首先我们打开https://blog.miskcoo.com/2014/07/fft-prime-table这篇文章找到\(998244353\)附近的几个质
- 2024-03-13洛谷 P4173 残缺的字符串 卡常小记
首先,使用匹配函数\(P(x_i,x_j)=x_ix_j-x_i^2[j\neq0]\)。容易发现,当存在\(i\neqj\)时,\(x_ix_j\)的系数只会增加,因此根据Schwartz-Zippel引理,随机一组\(x_{1\sim26}\)对应a~z即可。然后,对于NTT的过程,有两个卡常的点:一是点积reverse后转卷积的过程是舍
- 2024-02-29多项式板子
#include<bits/stdc++.h>#defineullunsignedlonglongusingnamespacestd;constintN=262150,mod=998244353,g=3,invg=(mod+1)/3,inv2=(mod+1)/2;intrev[N];ulla[N],b[N],w[N],inv[N];intqpow(inta,intb){ intans=1; while(b){ if(b&1){ an
- 2024-02-27[ABC303Ex] Constrained Tree Degree 题解
AtCoder题面洛谷题面如果每个点的度数都知道了,那问题就转化成了P2290[HNOI2004]树的计数,直接求Prufer序列的个数即可,因为一个度数为\(d_i\)的点在Prufer序列中的出现次数是\(d_i-1\),所以答案是:\(\frac{(n-2)!}{\prod_{i=1}^{n}(d_i-1)!}\)。可以把\((n-2)!\)放到
- 2024-02-26自己卷自己的分治 NTT
考虑如下卷积:\[f_i=\sum\limits_{j=1}^{i-1}f_jf_{i-j}\]仍然可以cdq分治计算。考虑当前在\([l,r]\),希望计算\([l,mid]\)贡献到\([mid+1,r]\)。若\(r-l<l\)那么\([1,r-l]\)都被算出,直接用\([1,r-l]\)和\([l,mid]\)卷两遍即可;否则\(l
- 2024-02-23数学:多项式
拉格朗日插值快速傅里叶变换(FFT)已经不知道被这玩意劝退了多少次了。但理解之后其实不算很阴间的东西?前置知识多项式负数单位根快速傅里叶变换快速傅里叶逆变换快速数论变换(NTT/FNTT)前置知识FFT注意到FFT的运算到处都是又\(\cos\)又\(\sin\)的,有不小的精度问题
- 2024-02-22NTT学习笔记
NTT好吧,本质上就是FFT,把单位根换成了原根(不是很理解但是就是记住就行)优点能取模,FFT的复数你给我来取个模没有精度差,FFT浮点数的精度怎么也会出一点问题由于均为整数操作(虽然取模多),NTT常数小,通常比一大堆浮点运算的FFT要快缺点多项式的系数都必须是整数模数有限制,NTT题的模
- 2024-02-17【多项式】任意模数 NTT/FTT
现在有两个整数多项式\(A\),\(B\),\(0\lea_i,b_i\le10^9\),\(n\le10^5\),求它们的卷积,同时系数对\(p\le10^9\)取模。我们会发现,最终的系数可能会达到\(10^5\times10^9\times10^9=10^{23}\)级别,FFT会爆longdouble的精度;NTT,由于模数无特殊性质,完全不能使用。接
- 2024-02-16【多项式】【模版】FFT NTT
多项式若\(A(x)=a_0+a_1x+a_2x^2+\dotsa_nx^n(a_n\ne0)\),则称\(A\)是\(n\)次多项式。初中概念,但在OI中可以玩出花来。多项式的表示方式像上面的介绍一样,用系数\(a_0,a_1,\dotsa_n\)来表示多项式的方法称为系数表示法。还有一种表示多项式的方法,就是对于\(n\)
- 2024-01-30thuwc2023:梦想
可能会写成流水账。我怎么已经高一了啊。怎么只有一年了啊。DAY-1考完了期末。希望物理能及格。出数学考场后知道自己填空压轴题没有注意到题面的\(-1\),当场愣住了,过了一会泪水忍不住往外流,并对着朋友生气了。唉,上次哭大概还在GDKOI。上次在学校生气已经想不起来是什么时
- 2024-01-29上辈子推的"分治 NTT"复杂度分析
hdu7381Cargo式子部分由liuhangxin想出。\[\sum\limits_{i=0}^{n}\binom{k}{i}(n-i)^{k-i}[x^i]\prod\limits_{id=1}^{m}(1-x^{c_{id}})\]实现部分当时胡了一个分治NTT,也不知道时间复杂度为什么是对的,但是过了。AC后十多分钟分析出来这个做法的时间复杂度为\(
- 2024-01-22FFT及NTT复习
FFTFFT和NTT是循环卷积,如果数组开小了,高位的值会加到低位上去DFT\[f(x)=a_0+a_1x+a_2x^2+a_3x^3+a_4x^4+a_5x^5+a_6x^6+a_7x^7\\f(x)=(a_0+a_2x^2+a_4x^4+a_6x^6)+x(a_1+a_3x^2+a_5x^4+a_7x^6)\\f(x)=G(x^2)+xH(x^2)\\\\f(\omega_n^k)=G(\omega_{\frac{n}{2}}^k)+\omega_
- 2023-12-22快速数论变换 | NTT 初学
快速数论变换|NTT初学前置FFT原根阶:称满足同余方程\(a^x\equiv1\modm\)的最小正整数解\(x\)为\(a\)的模\(m\)的阶,记为\(Ord_ma\)。观察到本质就是最短循环节,同时该同余方程类似于欧拉定理:\[a^{\varphi(m)}\equiv1\modm,a\botm\]那么显然两者的关系是
- 2023-10-26HUSTFC 2023游记+补题
前情提要:好好好,我退役后又复活了和两位Cu大佬组了个队打暑假多校,然后ICPC网络赛被薄纱了两场为了奖品HUST唯一的新生ICPC名额打的新生赛还拉了个高中的无辜同学来接受阿克曼的制裁,我有罪比赛:开场开到了K,进行一个莫名其妙的拼手速,4min过了,但是输了几秒没拿到一血然后看榜有
- 2023-09-29卷积导向快速傅里叶变换(FFT/NTT)教程
1Forewords卷积,但不止卷积-FFT漫谈先有FT,再有DFT,才有FFT时频转换是最初的用途发现单位根优秀性质,JamesCooley,JohnTukey发明现代FFT加速DFT,但此前相似的发现早已有之后来将DFT与卷积定理联系,FFT才被用于计算多项式乘法复数运算精度误差推动了NTT的发