因為在模意義下需要各種素數。 如果$r \cdot 2^k + 1 $ 是個素數,那么在\(\bmod r \cdot 2^k + 1\)意義下,可以處理 \(2^k\)以內規模的數據。 記錄一下 \(a*2^k + 1\)型素數的原根 \(g\)。 \(a*2^k ...
因為在模意義下需要各種素數。 如果$r \cdot 2^k + 1 $ 是個素數,那么在\(\bmod r \cdot 2^k + 1\)意義下,可以處理 \(2^k\)以內規模的數據。 記錄一下 \(a*2^k + 1\)型素數的原根 \(g\)。 \(a*2^k ...
使用NTT需要保證模數mod 為質數。 通過以下代碼求得一個模數的原根 , 常見的質數的原根 998244353 -> 3 1e9+7 -> 5 #include<bits/stdc++.h> #define ll long long ...
原根求解算法: 獲取一個數\(N\)的原根\(root\)的算法 快速數論變換算法: 計算多項式\(f_1*f_2\)在模\(P\) (\(P\)為質數) 意義下的卷積。 講真的,只要把\(FFT\)的單位復數根換成原根就行了。 注意要提前用上面的算法把模數的原根算出來。 ...
)=1 定理:模m有原根的充要條件是m=2,4,,其中p為奇質數,n為任意正整數 定理:素數必有原根 ...
幸運的原根如下: 有質數 \(p = k\cdot 2^r + 1\), 原根為 \(g\): 判斷代碼: \(p\) \(r\) \(k\) \(g\) 81788929 21 39 ...
任意模數\(NTT\) 眾所周知,為了滿足單位根的性質,\(NTT\)需要質數模數,而且需要能寫成\(a2^{k} + 1\)且\(2^k \ge n\) 比較常用的有\(998244353,1004535809,469762049\),這三個原根都是\(3\) 如果要任意模數怎么辦? \(n ...
階:設a,p是整數,a和p互素,那么:使 成立的最小正整數n叫做a模p的階. 原根:設m是正整數,a是整數,若a mod m的階等於φ(m),則稱a為模m的一個原根.(其中φ(m)表示m的歐拉函數) 假設一個數g是質數P的原根 ...
題目鏈接 \(Description\) 給定\(n,m,x\)和集合\(S\)。求\(\prod_{i=1}^na_i\equiv x\ (mod\ m)\)的方案數。其中\(a_i\in S\ ...