模板有標記。
P5514
CF1322B
按位考慮, 兩個數的和的第 k 位的取值只與這兩個數的低位有關, 所以在考慮從低到高第 k 位(從 0 開始)的時候, 把所有數對 \(2^{k+1}\) 取模。
對於兩個取模後的數, 如果要在第 k 位爲 1, 和必須在 \([2^k,2^{k+1}-1]\) 或 \([2^{k+1}+2^k, 2^{k+2}-2]\) 中。
雙指針計算即可。
【記錄】
P5535
伯特蘭-切比雪夫定理
若整數 n > 3, 則至少存在一個質數 p 滿足 \(n<p<2n-2\)。
另一個稍弱說法是, 若整數 n > 1, 存在一個質數 p 滿足 \(n<p<2n\)。
對於本題,若 k+1 爲質數, 那麼第一天不是 k+1 倍數的都將知道, 那麼如果 (k+1)*2 > n + 1, 只需一天所有數就都知道了;如果 2~n+1 中有 k+1 的倍數, 那麼只需兩天, 這是因爲相鄰數的 gcd 爲 1。
若 k+1 不是質數,不會證。
P1072
由於 x 必然爲 \(b_1\) 的約數, 所以 x 可能擁有的質因子集合找到了。
然後, 題目的兩個約束可以限定質因子的冪次的範圍。
然後直接掃過去就行了,可以過。
當然,也可以直接 dfs 求出 \(b_1\) 所有的約數然後一個一個判斷。
【記錄】
P2152
高精度!不寫了!
P2158
顯然同斜率的只有離 C 君最近的纔可以被看到。
那麼答案就是 \(3+2*\sum\limits_{i=2}^{N-1}\varphi(i)\), 記得特判 n=1。
【記錄】
P2398
關於這個 \(g\), \(id = 1*g\), 那麼顯然這個 g 是 \(\varphi\)。
【記錄】
要記住 \(\varphi(1)=1\) 和 \(\mu(1) = 1\) !!!
P2568
首先枚舉 p, 問題變成 \(1\le x,y\le \lfloor n/p\rfloor\) 中互質的 x,y 對數, 可以直接用 \(\varphi\) 搞, 這個是 \(1+2\cdot\sum\limits_{i=2}^{\lfloor n/p\rfloor}\varphi(i)\)。
【記錄】
P4139【擴展歐拉定理】
由於 \(2^{2^{2^{\cdots}}}\) 太大,可以直接用擴展歐拉定理。
擴展歐拉定理:
直覺上遞歸不會太多次, 直接在過程中暴力計算 \(\varphi\)。
【記錄】
P4549
裴蜀定理可以推廣到多個數。
P2613
歐拉定理求逆元的代碼測試題。
P3811【模數爲質數時預處理逆元】
當 mod 爲質數時,可用:
inv[1] = 1;
for (int i = 2; i < mod; ++ i)
inv[i] = (mod - mod / i) * inv[mod % i] % mod;
這樣推導:
P5431【預處理一堆逆元】
求前綴乘積, 然後求全乘起來的逆元, 然後這個可以用來求前綴乘積的逆元。
然後前綴乘積的逆元和前綴乘積可以組合成逆元。
總複雜度 \(O(n+\log w)\)。
P3951【小凱的疑惑/同餘最短路】
著名的小凱的疑惑。
介紹看到的用同餘最短路理解的方法。
首先關於同餘最短路:
lg2371
【記錄】
令 \(a<b\), 模擬一下同餘最短路的過程:
\(0\to b\mod a \to 2b \mod a\to \cdots\to (a-1)b\mod a\to 0\)
對於膜 a 的等價類, 都有一個最小的可以被表示出來的數, 把這個數減去 a 就是最大的不可以被表示出來的數(僅限當前等價類)。
觀察上面那個最短路的過程, 可以發現每個點被遍歷到的時候都是走的最短路, 所以本題的答案顯然就是 \((a-1)b-a\) 也就是傳說中的 \(ab-a-b\)。
P1082
基本的 exgcd
【記錄】
P1516【exgcd】
基礎練習題
【記錄】
P3846【BSGS】
也就是離散對數, 直接分塊搞。
【記錄】
P6091【原根】
求所有原根, 需要先求最小原根, 然後對於與模數的 φ 互質的數, 將它們作爲最小原根的次數, 可以得到所有原根。
【記錄】
P5491【二次剩餘】
【rqy的介紹】
抄一下。
以下 p 都指奇素數。
稱 \(a\) 是 \(\mod p\) 意義下的二次剩餘(感性記憶就是 “可開方的”), 如果存在 \(b\in\mathbb F_p\) 使得 \(b^2 = a\)。
性質:
-
在 \(1,...,p-1\) 中恰有一半二次剩餘。
設 g 是 \(\mathbb F_p\) 的原根 ,那麼二次剩餘恰爲 \(g^0,g^2,g^4,\dots,g^{p-3}\)。
稍微解釋一下,這是因爲 \(\mathbb F_p\) 中的所有數都可以用 g 的冪次表示, 而由於 g 是最小原根,所以 g 不可開方。
-
xy 是二次剩餘當且僅當 x,y 都是或都不是二次剩餘。
結合上面的比較顯然。
-
令 \((\frac ap)\) (Legendre symble) 爲:
\[\]\begin{cases}
0\quad ;;;a\equiv 0\
1\quad ;;;a 是二次剩餘\
-1\quad a 不是二次剩餘
\end{cases}\[\]如果 \(a=g^u\), 那麼 \(a^{(p-1)/2} = g^{u(p-1)/2}\), u 爲偶數的時候, 顯然這個式子等於 1, 反之, 等於 -1。這是因爲 \(g^{(p-1)/2}\equiv -1\)。(猜的)
Cipolla 算法
現在的問題是, 已知 n 是二次剩餘, 如何求出一個 \(x\in\mathbb F_p\) 使得 \(x^2 = n\)?
首先找到一個 \(a\in \mathbb F_p\) 使得 \(a^2-n\) 不是二次剩餘。
可以隨機 a, 可以證明滿足條件的 \(a\) 有 \(\frac{p-1}2\) 個, 所以期望 \(\frac{2p}{p-1}\approx 2\) 次就可以找到一個。(暫時不會證)
接下來以 \(a^2-n\) 作爲類似複數域的虛部 \(i^2\) 的東西造一個類似複數域的東西,考慮擴域 \(\mathbb F_p[\sqrt{a^2-n}]\), 其由所有形如 \(u+v\sqrt{a^2-n}\) 的數組成,其中 \(u,v\in\mathbb F_p\)。記 \(\alpha = \sqrt{a^2-n}\), 那麼域中的數即爲 \(u+v\alpha\)。
在這個域中,有一些性質:
- \((x+y)^p = x^p+y^p\)(可用二項式定理展開後證明, 實際上,任何每個元素的 p 倍都是 0 的域中, 這個性質都成立)
- \(\alpha^p = -\alpha\)。因爲 \(\alpha^p = (a^2-n)^{(p-1)/2}\alpha = -\alpha\)。
現在令 \(x = (a+\alpha)^{(p+1)/2}\)
那麼:
於是現在在 \(\mathbb F_p[\sqrt{a^2-n}]\) 中求得了 \(x^2=n\) 的一個解 \(x\)。還需要說明 \(x\) 一定屬於 \(\mathbb F_p\)。
這個等價於證 \(x\) 的虛部爲 0, 反證法即可。
【記錄】
P2485
【記錄】
P3306
細節太多先咕着。
P4884
【記錄】
分配律的大膜數乘法比較靠譜, 那個用 double 的比較看不懂。