NTT 求原根】的更多相关文章

题目 [SDOI2015]序列统计 挺好的题!!! 做法 \(f[i][j]\)为第\(i\)个数前缀积在模\(M\)意义下为\(j\) 显然是可以快速幂的:\[f[2*i][j]=\sum\limits_{ab\equiv j(mod~ M)}f[i][a]\cdot f[i][b]\] 时间复杂度\(O(m^2 log n)\) 考虑转换到对数上则可以化乘为加,而\(M\)为质数,原根\(g\)的\(g_0^{m-2}\)恰好对应\([1,m-1]\) 我们用这些代替数\(g^A\equiv…
使用NTT需要保证模数mod 为质数. 通过以下代码求得一个模数的原根 , 常见的质数的原根  998244353 -> 3    1e9+7 -> 5 #include<bits/stdc++.h> #define ll long long #define IL inline #define RG register using namespace std; ll prm[1000],tot,N,root; ll Power(ll bs,ll js,ll MOD){ ll S =…
Primitive Roots 题目链接:id=1284">http://poj.org/problem?id=1284 利用定理:素数 P 的原根的个数为euler(p - 1) typedef long long ll; using namespace std; /* 求原根 g^d ≡ 1(mod p) 当中d最小为p-1.g 便是一个原根 复杂度:O(m)*log(P-1)(m为p-1的质因子个数) */ ll euler(ll x) { ll res = x; for (ll i…
题意:求奇质数 P 的原根个数.若 x 是 P 的原根,那么 x^k (k=1~p-1) 模 P 为1~p-1,且互不相同. (3≤ P<65536) 解法:有费马小定理:若 p 是质数,x^(p-1)=1 (mod p).这和求原根有一定联系. 再顺便提一下欧拉定理:若 a,n 互质,那么 a^Φ(n)=1(mod n).    还有一个推论:若x = y(mod φ(n) 且 a与n 互质,则有 a^x=a^y(mod n). 百度百科是这么说的:"原根,归根到底就是 x^(p-1)=…
题目来源:http://www.fjutacm.com/Problem.jsp?pid=3283 题意:给两串长度为n的数组a和b,视为环,a和b可以在任意位置开始互相匹配得到这个函数的值,求这个函数的值最大是多少: 很明显是FFT,但是数据范围是n是1e5,a[i]和b[i]是1e6:精度会丢很多,也就是要NTT解决,那么要选一个不会影响答案的P,因为最大值为1e5*1e6*1e6:那么我们选一个1e17以上的就差不多了,然后就是求循环卷积的步骤,对此,我建议你们算一下这个,[a1.a2.a3…
题目链接 大题流程: 判定是否有原根->求出最小原根->利用最小原根找出全部原根 #include<bits/stdc++.h> using namespace std; typedef long long LL; ; ]; ]; ]; int num_prime; void init() { memset(check, false, sizeof(check)); phi[]=; ; i<=maxn; i++) { if(!check[i]) { prime[num_pri…
Primitive Roots Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3381   Accepted: 1980 Description We say that integer x, 0 < x < p, is a primitive root modulo odd prime p if and only if the set { (xi mod p) | 1 <= i <= p-1 } is eq…
LINK:原根 再复习一下原根 防止考场上要NTT求原根的时候不会求... 这道题要求求出n之内的所有原根 根据原根的定义. 原根指 若x对于模n的阶为phi(n)且\(1\leq x\leq n\) 那么称x为n的原根. 暴力做法枚举x 枚举phi(n)的因数 看其是否同余1. 复杂度nsqrt(n)左右. 考虑更快的做法 (去年省选骗分过样例也用了这个做法 考虑求出最小的原根g(暴力,但是很快. 对于剩下的原根都可以表示成g^k,条件为(k,phi(n))==1.(显然. 于是就做完了.值得…
题目描述 求长度为 $n$ 的序列,每个数都是 $|S|$ 中的某一个,所有数的乘积模 $m$ 等于 $x$ 的序列数目模1004535809的值. 输入 一行,四个整数,N.M.x.|S|,其中|S|为集合S中元素个数. 第二行,|S|个整数,表示集合S中的所有元素. 1<=N<=10^9,3<=M<=8000,M为质数 1<=x<=M-1,输入数据保证集合S中元素不重复 输出 一行,一个整数,表示你求出的种类数mod 1004535809的值. 样例输入 4 3 1…
我这种数学一窍不通的菜鸡终于开始学多项式全家桶了-- 必须要会的前置技能:FFT(不会?戳我:[知识总结]快速傅里叶变换(FFT)) 以下无特殊说明的情况下,多项式的长度指多项式最高次项的次数加\(1\) 一.NTT 跟FFT功能差不多,只是把复数域变成了模域(计算复数系数多项式相乘变成计算在模意义下整数系数多项式相乘).你看FFT里的单位圆是循环的,模一个质数也是循环的嘛qwq.\(n\)次单位根\(w_n\)怎么搞?看这里:[BZOJ3328]PYXFIB(数学)(内含相关证明.只看与原根和…