Crash的數字表格(莫比烏斯反演)
Crash的數字表格
Description
今天的數學課上,Crash小朋友學習了最小公倍數(Least Common Multiple)。對於兩個正整數a和b,LCM(a, b)表示能同時被a和b整除的最小正整數。例如,LCM(6, 8) = 24。回到家後,Crash還在想著課上學的東西,為了研究最小公倍數,他畫了一張NM的表格。每個格子裏寫了一個數字,其中第i行第j列的那個格子裏寫著數為LCM(i, j)。一個4 5的表格如下: 1 2 3 4 5 2 2 6 4 10 3 6 3 12 15 4 4 12 4 20 看著這個表格,Crash想到了很多可以思考的問題。不過他最想解決的問題卻是一個十分簡單的問題:這個表格中所有數的和是多少。當N和M很大時,Crash就束手無策了,因此他找到了聰明的你用程序幫他解決這個問題。由於最終結果可能會很大,Crash只想知道表格裏所有數的和mod 20101009的值。
Input
輸入的第一行包含兩個正整數,分別表示 \(N\) 和 \(M\)。
Output
輸出一個正整數,表示表格中所有數的和\(mod \ 20101009\)的值。
Sample Input
\(4 \ 5\)
Sample Output
\(122\)
【數據規模和約定】
100%的數據滿足\(N, M ≤ 10^7\)。
由題可得:我們應該求的是 \(\sum_{i =1} ^ n\ \sum_{j=1}^m\ lcm(i,j)\) (不妨設 \(n<=m\))
先可以由原式化簡:
\(ans = \sum_{i=1}^n\ \sum_{j=1}^n\ \frac{ij}{gcd(i,j)}\)
\(ans = \sum_{d=1}^n\ \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\ \sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\ [gcd(i,j)=1]\ ijd\)
經過最開始的基本化簡以後,既然這道題和 \(gcd\) 有許許多多不可描述的關系,我們可以考慮莫比烏斯反演。
既然要用莫比烏斯反演,我們就應該來構造相應的 \(f(x)\) 和 \(F(x)\)
我們設 \(f(x, y, k)\) 表示 \(\sum_{i=1}^x\ \sum_{j=1}^y\ [gcd[i,j]=k]\ ij\)
再設 \(F(x,y,t)\)
\(\therefore \ ans=\sum_{d=1}^n\ d\ f(\lfloor\frac{n}{d}\rfloor,\lfloor\frac{m}{d}\rfloor,1)\)
現在,我們來仔細觀察一下 \(F(x,y,t)\) 和 \(f(x,y,k)\) 兩個函數的關系
\(F(x,y,t)=\sum_{t\mid d}\ f(x,y,d)\)
由莫比烏斯反演後可得:
\(f(x,y,d)=\sum_{d\mid t}\ \mu(\frac{t}{d})\ F(x,y,t)\)
\(\because\ d=1\)
\(\therefore\ f(x,y,1)=\sum_{t=1}^x\ \mu(t)\ F(x,y,t)\)
現在,我們回過頭了思考一下我們上面一系列操作的意義:
我們由題目要求推得我們需要求 \(f(x,y,1)\)
但是我們發現直接求並不好求,所以我們反演以後轉化為去求 \(F(x,y,t)\) 再進一步求得 \(ans\)
既然我們轉化為 \(F(x,y,t)\) ,那麽這個函數應該要比較方面我們求值才可以達到我們的要求
所以我們來考慮一下 \(F(x,y,t)\) 這個函數
仔細思考後可以發現:
\(F(x,y,t)=\sum_{d=1}^x\ d^2\ (\sum_{a=1}^{\lfloor\frac{x}{d}\rfloor}\ a\ \sum_{b=1}^{\lfloor\frac{y}{d}\rfloor}\ b)\)
設 \(sum(x,y)=\sum_{a=1}^x\ \sum_{b=1}^y\ ab\)
顯然可以用高斯求和 \(O(1)\) 求得
\(\therefore \ F(x,y,t)=\sum_{d=1}^x\ d^2\ sum(\lfloor\frac{x}{d}\rfloor,\lfloor\frac{y}{d}\rfloor)\)
那麽整個分析過程就差不多完成了,綜上所述:
\(ans=\sum_{d=1}^n\ d\ f(\lfloor\frac{n}{d}\rfloor,\lfloor\frac{m}{d}\rfloor,1)\)
我們可以分塊處理 \(f\) ,此處可以分塊 復雜度\(O(\sqrt{n})\)
\(f(x,y,1)=\sum_{t=1}^x\ \mu(t)\ F(x,y,t)=\sum_{t=1}^x\ \mu(t)\ t^2\ sum(\lfloor\frac{x}{t}\rfloor,\lfloor\frac{y}{t}\rfloor)\)
我們可以 \(O(1)\) 預處理 \(\mu(t)\ t^2\),計算 \(sum\)
所以總復雜度 \(O(n\sqrt{n})\)
Crash的數字表格(莫比烏斯反演)