注意

由于蒟蒻实在太弱了~^_^~暂时无法完成证明,仅能写出简单版总结

与FFT的区别

\(NTT\)与\(FFT\)的代码区别就是把单位根换成了原根,从而实现无精度误差与浮点数的巨大常数

原根具有单位根的所有特点,原根是在特定模数下的定义

对于模数\(p\),原根\(g\)满足:\(~_{i=0}^{p-1}g^i (mod~p)\)均不同

用\(type=1,g^{\frac{p-1}{2*mid}};type=-1,\dfrac{1}{g^{\frac{p-1}{2*mid}}}\)代替单位根
最后得到的值除一下\(limit\)

原根

快速求原根:对于模数\(p\)分解质因数,\(p-1=p_1^{k_1}...p_n^{k_n}\),原根\(g\)满足\(~_{i=1}^n g^{\frac{p-1}{p_i}}≠1(mod p)\)

求原根就直接分解\(p-1\),然后\(1\)~\(p\)枚举原根就行,通常原根很小,所以能快速求出

\(w=g^{\frac{p-1}{2*mid}}\)

NTT小结及原根求法的更多相关文章

  1. 快速数论变换(NTT)小结

    NTT 在FFT中,我们需要用到复数,复数虽然很神奇,但是它也有自己的局限性--需要用double类型计算,精度太低 那有没有什么东西能够代替复数且解决精度问题呢? 这个东西,叫原根 原根 阶 若\( ...

  2. [UOJ86]mx的组合数——NTT+数位DP+原根与指标+卢卡斯定理

    题目链接: [UOJ86]mx的组合数 题目大意:给出四个数$p,n,l,r$,对于$\forall 0\le a\le p-1$,求$l\le x\le r,C_{x}^{n}\%p=a$的$x$的 ...

  3. x^a=b(mod c)求解x在[0,c-1]上解的个数模板+原根求法

    /************************************* 求解x^a=b(mod c) x在[0,c-1]上解的个数模板 输入:1e9>=a,b>=1,1e9>= ...

  4. 【BZOJ3992】【SDOI2015】序列统计 原根 NTT

    题目大意 有一个集合\(s\),里面的每个数都\(\geq0\)且\(<m\). 问有多少个长度为\(n\)的数列满足这个数列所有数的乘积模\(m\)为\(x\).答案模\(1004535809 ...

  5. $NTT$(快速数论变换)

    - 概念引入 - 阶 对于$p \in N_+$且$(a, \ p) = 1$,满足$a^r \equiv 1 (mod \ p)$的最小的非负$r$为$a$模$p$意义下的阶,记作$\delta_p ...

  6. 从傅里叶变换(FFT)到数论变换(NTT)

    FFT可以用来计算多项式乘法,但是复数的运算中含有大量的浮点数,精度较低.对于只有整数参与运算的多项式,有时,\(\text{NTT(Number-Theoretic Transform)}\)会是更 ...

  7. Algorithm: 多项式乘法 Polynomial Multiplication: 快速傅里叶变换 FFT / 快速数论变换 NTT

    Intro: 本篇博客将会从朴素乘法讲起,经过分治乘法,到达FFT和NTT 旨在能够让读者(也让自己)充分理解其思想 模板题入口:洛谷 P3803 [模板]多项式乘法(FFT) 朴素乘法 约定:两个多 ...

  8. DFT/FFT/NTT

    在Seal库和HElib库中都用到了NTT技术,用于加快多项式计算,而NTT又是FFT的优化,FFT又来自于DFT,现在具体学习一下这三个技术! 基础概念 名词区分 1.DFT:离散傅立叶变换 2.F ...

  9. FFT/NTT 总结

    本总结主要用于帮助个人理解,讲得不足之处,还请各位看官谅解 FFT 补充知识 \(n\)次单位复根(\(w_n\)): 使得\(z^n=1\)的一类复数,这些复数一共有\(n\)个,它们都分布在复平面 ...

随机推荐

  1. Cookie中的HttpOnly

    1.什么是HttpOnly? 如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,具体一点的介绍请google进行搜索 2.ja ...

  2. 浏览器输入 URL 之后的链路

    视频 [序章]要找到B站有多难?秃头警告 脑图 一次完整的 Http 事务 文章 技术普及帖:你刚才在淘宝上买了一件东西 Github-从URL输入到页面展现到底发生什么? 总结的非常全 前端面试题: ...

  3. 有关mysql的utf8和utf8mb4,以及Illegal mix of collations for operation 'like'

    参考以下几个帖子: https://www.cnblogs.com/install/p/4417527.html https://blog.csdn.net/Yetmoon/article/detai ...

  4. vue计算属性的使用

    props:['name'],//接收父组件的数据 computed:{//当数据发生改变时,会自动去计算 zojia:function(){ //zojia是自己声明的函数 let a = null ...

  5. elementUI——主题定制

    需求: 设计三套主题色+部分图标更换: 实现方式汇总: 1.传统做法,生成多套css主题包,切换link引入路径切换href实现,参考网站:http://jui.org/: <link id=& ...

  6. python(字符串函数)

    一.字符串函数 1.首字母大小写 capitalize() title() name = "xinfangshuo" print (name.capitalize()) print ...

  7. 网络时间同步服务和chrony

    时间同步和chrony 时间同步:多主机协作工作时,各个主机时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等, 利用NTP(Network Time Protocol) ...

  8. [S32K]GPIO使用

    问题: 1.为何对Port口下的某个引脚单独配置Direction会影响到该Port下的其他PIN脚,导致之前配置失效?当前没办法,只能把工程中所有用到的PIN脚Direction一次配置完毕 详细介 ...

  9. Vim编译器的相关知识

    Vim编译器相关知识 1.关于Vim编译器 在热门Linux操作系统中都会默认安装一款超好用的文本编辑器——名字叫“vim”,vim是vi编辑器的升级版. vim 具有程序编辑的能力,可以主动的以字体 ...

  10. 2013.4.19 - KDD第一天

    其实昨天KDD就开始了,不过今天算是我跟KDD的第一天.   昨天夜里就短信跟中秋聊了一会儿,然后中秋说他一天都在弄数据库,连不上怒了.然后我跟他说明天我来.于是今天就在图书馆弄KDD,数据是用数据库 ...