1. 程式人生 > >P3768 簡單的數學題 [狄利克雷卷積,杜教篩,莫比烏斯反演]

P3768 簡單的數學題 [狄利克雷卷積,杜教篩,莫比烏斯反演]

簡單的數學題

題目連線

題目描述

輸入一個正整數n,n1010n,n\le 10^{10}p,p1.1×109p,p \le 1.1 \times 10^9.且pp為質數.

計算i=1nj=1nijgcd(i,j)\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j)pp取模.

題解

方法一.暴力推公式

  1. 考慮把列舉gcd(i,j)gcd(i,j) 原式=d=1nd3i=1n/dj=1n/dij×[gcd(i,j)=1]\sum_{d=1}^nd^3\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}ij\times [gcd(i,j)=1]
  2. 莫比烏斯反演處理後邊的式子 設f(x)=i=1n/dj=1n/dij×[gcd(i,j)=x]f(x)=\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}ij\times [gcd(i,j)=x] g(x)=xdf(d)=x2i=1n/dxj=1n/dxijg(x) = \sum_{x|d}f(d)=x^2\sum_{i=1}^{n/dx}\sum_{j=1}^{n/dx}ijf(x)=xpμ(p/x)g(p)=xpμ(p/x)p2i=1n/dpj=1n/dpijf(x)=\sum_{x|p}\mu(p/x)g(p)=\sum_{x|p}\mu(p/x)p^2\sum_{i=1}^{n/dp}\sum_{j=1}^{n/dp}ij 因此f(1)=p=1nμ(p)p2i=1n/dpj=1n/dpijf(1)=\sum_{p=1}^n\mu(p)p^2\sum_{i=1}^{n/dp}\sum_{j=1}^{n/dp}ij
  3. 合併兩部分 原式=d=1nd3p=1nμ(p)p2i=1n/dpj=1n/dpij\sum_{d=1}^nd^3\sum_{p=1}^n\mu(p)p^2\sum_{i=1}^{n/dp}\sum_{j=1}^{n/dp}ij 轉而列舉a=dpa=dp.我們得到: 原式=a=1ndaa2dμ(a/d)i=1n/aij=1n/aj=\sum_{a=1}^n\sum_{d|a}a^2d\mu(a/d)\sum_{i=1}^{n/a}i\sum_{j=1}^{n/a}j =a=1n(na(na+1)2)2a2dadμ(a/d)=\sum_{a=1}^n (\frac{\lfloor \frac{n}{a} \rfloor(\lfloor \frac{n}{a} \rfloor+1)}{2})^2a^2\sum_{d|a}d\mu(a/d) 我們發現Idμ=ϕId*\mu=\phi是常見的狄利克雷卷積. 因此原式=a=1n(na(na+1)2)2a2ϕ(a)=\sum_{a=1}^n (\frac{\lfloor \frac{n}{a} \rfloor(\lfloor \frac{n}{a} \rfloor+1)}{2})^2a^2\phi(a) 化簡到這一步的時候,前面部分可以分塊計算,後面的部分a2ϕ(a)a^2\phi(a)要快速計算字首和. 於是我們想到了杜教篩: 記f(x)=x2ϕ(x)f(x)=x^2\phi(x),找到積性函式g(x)=x2g(x)=x^2與它做卷積使得g(x)g(x)的字首和可以快速求出,而(fg)(x)=dxxd2×d2ϕ(d)=x2dxϕ(x)=x3(f*g)(x)=\sum_{d|x}\frac{x}{d}^2\times d^2\phi(d)=x^2\sum_{d|x}\phi(x)=x^3的字首和也可以快速求出. 記S(x)=i=1xf(x)S(x)=\sum_{i=1}^xf(x) 根據杜教篩公式g(1)S(n)=x=1n(fg)(x)x=2ng(x)S(nx)g(1)S(n)=\sum_{x=1}^n(f*g)(x) - \sum_{x=2}^ng(x)S(\frac{n}{x}). S(n)=x=1nx3x=2nx2S(nx)S(n)=\sum_{x=1}^nx^3-\sum_{x=2}^nx^2S(\frac{n}{x})