【筆記】數論 2024.8.4

caijianhong發表於2024-08-04

冪數 !

#6222. 冪數 !(加強版) - Problem - LibreOJ (loj.ac)

轉寫為 \(a^2b^3\) 要求 \(b\) 沒有平方因子,這樣是雙射對應。那麼即求

\[\sum_{i=1}^{\sqrt[3]{n}}\mu^2(i)\left\lfloor\sqrt{\frac{n}{i^3}}\right\rfloor \]

後面那個大根號可以整除分塊?轉化為求 \(\mu^2(i)\) 的字首和。

\[\mu^2(n)=\sum_{d^2|n}\mu(d) \]

\[\sum_{i=1}^n\mu^2(i)=\sum_{i=1}^n\sum_{d^2|i}\mu(d)=\sum_{d=1}^{\sqrt n}\mu(d)\left\lfloor\frac{n}{d^2}\right\rfloor \]

甚至還能整除分塊。

約數函式(單點)

\[d(n)\sim O(n^{1.066/\ln\ln n}) \]

一種 \(O(n^{1/3}/\ln n)\) 的求約數函式方法:首先除去所有 \(\leq n^{1/3}\) 的質因子。那麼剩下要麼是一個質數、一個質數的平方、兩個質數的乘積。前兩個都可以判斷,最後一個不關心具體怎麼分解。

約數函式(DIVCNT1)

DIVCNT1 - Counting Divisors - 洛谷 | 電腦科學教育新生態 (luogu.com.cn)

\[\sum_{i=1}^nd(i)=\sum_{i=1}^n\left\lfloor\frac{n}{i}\right\rfloor \]

列舉每個約數計算貢獻。相當於求反比例函式下整點個數。

更快的字首和計算:先暴力計算 \(\leq n^{1/3}\) 的約數的貢獻。剩下的用皮克定理擬合,將 \(y\leq n^{1/2}\) 的部分劃分為很多梯形,需要滿足梯形中沒有多餘整點,證明有 \(O(n^{1/3})\) 段。需要二分一個新的斜率去擬合,說是使用 SB 樹二分。

what?

線性篩自然數冪(i^m)

在每個質數 \(p\) 處算 \(p^m\),然後利用它是完全積性函式的性質做線性篩。由質數分佈密度可知是線性的。

線性篩自然數冪(i^i)

\[y=xp\implies y^y=(xp)^{xp}=(x^x)^p(p^p)^x \]

\(p^{px}\) 可以在質數點處光速冪一下。注意到只有 \(\leq n^{1/2}\) 的質數可能需要用。這部分甚至不足線性。

\((x^x)^p\)\(p\) 列舉到下一個質數時,觀察差,發現是 \(O(\log \frac{n}{x})\) 的。所以是 \(\sum_{x=1}^n\log \frac{n}{x}\)。竟然是線性的。

也就是說

\[n\log n-\log1-\log2\cdots-\log n=O(n) \]

Min_25 篩不會但是要學

洲閣篩也不會但是要學

這中間有好多個題都沒聽

後面全掉線了,nm

OI-Wiki 或者歷史上的今天。

[Project Euler 530] GCD of Divisors

GCD of Divisors

給定 \(f(n)=\sum_{d|n}\gcd(d,n/d)\) 的字首和 \(F(n)\)\(n=10^{15}\)

\[\sum_{i=1}^n\sum_{d|i}\gcd(d, i/d)=\sum_{i=1}^n\sum_{d|i}\sum_{k|d, k|i/d}\varphi(k)\\ =\sum_{i=1}^n\sum_{k|i}\varphi(k)\sum_{k|d,d|i/k}1\\ =\sum_{i=1}^n\sum_{k^2|i}\varphi(k)d(i/k^2)\\ =\sum_{k=1}^{\sqrt n}\varphi(k)D(\left\lfloor n/k^2\right\rfloor)\\ \]

直接暴力,用 \(\sqrt n\)\(D(n)\)(約數函式字首和),積分結果是對的。

[CF571E] Geometric Progressions

Geometric Progressions - 洛谷 | 電腦科學教育新生態 (luogu.com.cn)

只需考慮每個質因子的指數。注意,下標可能不同。所以有個 exgcd 過程。

寫這個題

[LOJ6686] Stupid GCD

#6686. Stupid GCD - Problem - LibreOJ (loj.ac)

下面可能是錯的,不知道哪一步的問題。

\[\sum_{i = 1} ^ {n} \gcd\left(\left\lfloor\sqrt[3]{i}\right\rfloor, i\right)\\ =\sum_{r=1}^{\sqrt[3]{n}}\sum_{i=r^3}^{\min(n, (r+1)^3-1)}\gcd(r, i)\\ =\sum_{r=1}^{\sqrt[3]{n}}\sum_{i=r^3}^{\min(n, (r+1)^3-1)}\sum_{d|r, d|i}\varphi(d)\\ =\sum_{r=1}^{\sqrt[3]{n}}\sum_{d|r}\varphi(d)({\min(n, (r+1)^3-1)}/d-(r^3-1)/d)\\ =\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}({\min(n, (r+1)^3-1)}/d-(r^3-1)/d)\\ \]

\[\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}(r^3-1)/d\\ =\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}(r^3/d-1)\\ =\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{i=1}^{\sqrt[3]{n}/d}(d^2i^3-1)\\ =trivial \]

可以整除分塊。

\[\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}({\min(n, (r+1)^3-1)}/d)\\ \]

特判最後一項

\[\sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}({(r+1)^3-1)}/d\\ \sum_{d=1}^{\sqrt[3]{n}}\varphi(d)\sum_{d|r}^{\sqrt[3]{n}}(r^3+3r^2+3r)/d\\ =trivial \]

說說如何特判最後一項

\[\sum_{i=1}^n\gcd(r, i)=\sum_{i=1}^n\sum_{d|i, d|r}\varphi(d)=\sum_{d|r}\varphi(d)(n/d) \]

可以根號。


說對於同一個 \(r\),那個 \(\gcd\) 有迴圈節。然後有更簡單的做法。然後為什麼有杜教篩部分?要求 \(\varphi\)\(\varphi\cdot Id\) 的字首和,不知道為什麼。?

杜教篩相當於做除法。

[POI2002] 超級馬

\(n\leq 10^6, |P|, |Q|\leq 10^9\)

整係數:輾轉相除直到只剩一個向量的第一維非零。然後可以裴蜀定理。

非負整數:可以選出三個向量組成銳角三角形,然後不會了,

[集訓隊作業2018] 石像

【集訓隊作業2018】石像 - 題目 - Universal Online Judge (uoj.ac)

\[\left(\sum_{a_1=1}^m\sum_{a_2=1}^m\cdots\sum_{a_n=1}^m{\left(\sigma_0\left(\gcd\left(a_1,a_2,\ldots,a_n\right)^3\right)\right)}^3\prod_{i=1}^k\left[a_{x_i}\leq a_{y_i}\right]\right)\bmod 2^{32} \]

\(n\) 太小,考慮狀壓拓撲序,處理出有恰好 \(x\) 種本質不同權值的方案數。還是預處理什麼東西,不清楚。

\[f(x):=\sigma_0(x^3)^3, g:=f*\mu \]

\[\sum_{a_1=1}^m\sum_{a_2=1}^m\cdots\sum_{a_n=1}^mf(\gcd(a_1, \cdots, a_n))\\ =\sum_{a_1=1}^m\sum_{a_2=1}^m\cdots\sum_{a_n=1}^m\sum_{k|a_1, a_2,\cdots, a_n}g(k)\\ =\sum_{k=1}^mg(k)\sum_{a_1=1}^{m/k}\sum_{a_2=1}^{m/k}\cdots\sum_{a_n=1}^{m/k}(\text{一些剛才算過的東西}) \]

\[f(p^c)=(3c+1)^3 \]

\[g(p^c)=f(p^c)-f(p^{c-1})=(\text{一個關於c的二次函式}) \]

[集訓隊作業2018] 人類的本質

【集訓隊作業2018】人類的本質 - 題目 - Universal Online Judge (uoj.ac)

\(y_j=i/\gcd(i, x_j)\),則

\[\operatorname{lcm}_j\{i/y_j\}=i/\gcd_j\{y_j\} \]

\(\varphi(y)\) 計算了有多少個 \(x\) 貢獻給 \(y\)。這個計算過程很傻逼的不抄了(提示:需要用到 \(\mu*Id=\varphi\))。

\[f(n):=\sum_{1\leq j\leq k, y_j|n}\frac{n}{\gcd(y_1, y_2, \cdots, y_k)}\varphi(y_1)\varphi(y_2)\cdots\varphi(y_k) \]

服了,這是積性函式。

\[f(p^c)=p^c\sum_{\min(c_1, \cdots, c_k)=m}p^{-m}\prod_j\varphi(p^{c_j}) \]

\[g(p, m):=\sum_{c_i\geq m}\prod_i\varphi(p^{c_i})=\sum_{c_1\geq m}\varphi(p^{c_1})\sum_{c_2\geq m}\varphi(p^{c_1})\cdots\\ =((p-1)(p^{lim-1}-p^{m-1}))^k \]

所以 \(f(p^c)\) 可以被快速計算,後面就是篩。

[CF1770F] Koxia and Sequence

洛谷題解寫的好啊!!!至於花花的做法沒聽懂

[JROI-4] 少女幻葬

P8322 『JROI-4』少女幻葬 - 洛谷 | 電腦科學教育新生態 (luogu.com.cn)

\(f(i, j)\) 表示當前這個數是 \(j\),它與前面那個的數 \(\gcd=i\)。注意只有 \(O(nm\log m)\)\(f\)

\(g(i, j)\) 表示當前這個數是 \(j\),它要求與後面那個數的 \(\gcd=i\)。注意只有 \(O(nm\log m)\)\(g\)

\[f_{i, j}=\sum_{\gcd(j, k)=i}g_{i, k} \]

(k)-i-(j)

\[\implies A_m=\sum_{\gcd(m, j)=1}B_j=\cdots=\sum_{k|m}\mu(k)(C_k:=\sum_{k|j}B_j) \]

\(B\) 做兩次迪利克雷字首和,第一次求 \(C\),第二次求 \(A\)。迪利克雷字首和複雜度 \(O(m\log\log m)\)

\[g_{i, j}=\sum_{\gcd(k, i)=1}f_{k, j} \]

-k-(j)-i-

有個更牛的,因為是 \(\gcd()=1\),相當於質因子集合不交。變成集合冪級數求解。比迪利克雷字首和還牛。複雜度有很多個數不勝數的 \(\log\),但是是複合的。

[Hangzhou22I] Guess Cycle Length

隨機撒 \(10^3\) 個點,取節點編號最大值,期望大小為 \(n_0=\frac{10^3}{10^3+1}n\)。也就是說 \(n-n_0\) 期望是 \(10^6\) 的樣子。撒完點之後,走 \(10^3\) 步,記下 \(10^3\) 個節點編號,然後走 \(n_0-10^3\) 步,然後一次走 \(10^3\) 步,期望 \(10^3\) 步後能走回剛才記下的編號。

基於值域預處理的快速 GCD

P5435 基於值域預處理的快速 GCD - 洛谷 | 電腦科學教育新生態 (luogu.com.cn)

\(B:=\sqrt V\)。預處理 \(\gcd[i\leq B][j\leq B]\),可以 \(O(V)\)

對所有 \(\leq V\) 的數,要麼是

  • 質數;
  • 被分解成若干個互質的 \(\leq B\) 的數。

\(x=a_1a_2a_3, y\) 為例,\(a_1, a_2, a_3\) 兩兩互質,那麼互不影響,直接寫

\[\gcd(a_1, y\bmod a_1)\gcd(a_2, y\bmod a_2)\gcd(a_3, y\bmod a_3) \]

但是分解的項數不能多。考慮怎麼分解。令 \(x=\prod_{i=1}^kp_i\)\(p\) 單調不降。

  1. \(p_k>B\)\((p_k, x/p_k)\) 即可。
  2. 找一個字首積 \(s_{i-1}\) 滿足 \(s_{i-1}<B, s_i>B\),那麼 \((s_{i-1}, p_i, x/s_i)\) 為所求。

這個東西還是帶了一個 \(O(\log V)\)。更猛的是,你找一個 \(x\) 的最小的質因子 \(p\),那麼 \(x/p\) 的分解方案的最小的數乘上 \(p\) 就是 \(x\) 的分解。

事實上我先做 \(O(d)\) 次輾轉相除,將問題規模縮小至 \(O(V/2^d)\),也是可以的。

相關文章