一、素数判定 Miller_Rabbin
引理:
费马小定理 a ( p − 1 ) = 1 ( m o d p ) a^(p-1)=1(mod\ p) a(p−1)=1(mod p)
二次探测定理 x 2 = 1 ( m o d p ) x^2=1(mod\ p) x2=1(mod p) 两个解 1 , p − 1 1,p-1 1,p−1
二、分解质因子
Pollard-rho启发式 时间复杂度 O ( n 1 4 ) O(n^\frac{1}{4}) O(n41)
引理:生日悖论
算法流程:
①选取两个随机数 x 0 x_0 x0 和 c c c。
②构造函数 f ( x i ) = ( x i − 1 2 + c ) m o d n f(x_i)=(x_{i-1}^2+c)mod n f(xi)=(xi−12+c)modn,设 y = x 2 k y=x_{2^k} y=x2k,不断判断 1 < g c d ( ∣ y − x i ∣ , n ) < n 1<gcd(|y-x_i|,n)<n 1<gcd(∣y−xi∣,n)<n 。
③ ∵ \because ∵
∴ \therefore ∴ 当 y = x i y=x_i y=xi 时退出。
④通过 Pollard_rho 求得一个因子,用 Miller_Rabbin 判断是否是质因子。
⑤不断递归判断。
质因数分解模板
三、BSGS
用途:求解方程 y x = z ( m o d p ) y^x=z(mod\ p) yx=z(mod p) , p p p 为素数(本质是 g c d ( y , p ) = 1 ) gcd(y,p)=1) gcd(y,p)=1)。
考虑 x = i r − b x=ir-b x=ir−b,所以 y i r = z × y b ( m o d p ) y^{ir}=z\times y^b(mod\ p) yir=z×yb(mod p)
所以枚举 b b b,用 hash 记录 y i r y^{ir} yir。
当 r = p r=\sqrt p r=p 时效率最优 O ( n ) O(\sqrt n) O(n)。
四、裴蜀定理
方程 ∑ i = 1 n x i × a i = b \sum_{i=1}^nx_i\times a_i=b ∑i=1nxi×ai=b 有整数解的充要条件是 d = g c d ( a 1 , a 2 , . . . , a n ) ∣ b d=gcd(a_1,a_2,...,a_n)|b d=gcd(a1,a2,...,an)∣b
五、exBSGS
p p p 不为素数即 g c d ( p , y ) ! = 1 gcd(p,y)!=1 gcd(p,y)!=1。
把柿子 y x = z ( m o d p ) y^x=z(mod\ p) yx=z(mod p) 展开,得 y × y x − 1 + k × p = z y\times y^{x-1}+k\times p=z y×yx−1+k×p=z。由裴蜀定理(exgcd)可得,有解当且仅当 g c d ( y , p ) ∣ z gcd(y,p)|z gcd(y,p)∣z。
若有解则 y d × y x − 1 + k × p d = z d \frac{y}{d}\times y^{x-1}+k\times \frac{p}{d}=\frac{z}{d} dy×yx−1+k×dp=dz。
不断递归,设递归 c c c 次, ∏ i = 1 c d i = g \prod_{i=1}^{c}d_i=g ∏i=1cdi=g
则 y c g × y x − c + k × p g = z g \frac{y^c}{g}\times y^{x-c}+k\times \frac{p}{g}=\frac{z}{g} gyc×yx−c+k×gp=gz,即 y c g × y x − c = z g ( m o d p g ) \frac{y^c}{g}\times y^{x-c}=\frac{z}{g}(mod\ \frac{p}{g}) gyc×yx−c=gz(mod gp) 且 g c d ( y , p g ) = 1 gcd(y,\frac{p}{g})=1 gcd(y,gp)=1。
此时用 BSGS 求 x − c x-c x−c 即可。
「SDOI2011」计算器
六、扩展欧拉定理
费马定理,欧拉定理的扩展版。
a b m o d m = { a b m o d φ ( m ) a ⊥ m a b b < φ ( m ) a [ b m o d φ ( m ) ] + φ ( m ) b > φ ( m ) a^b\ mod\ m=\begin{cases}a^{b\ mod\ \varphi(m)}&a\bot m\\a^b&b<\varphi(m)\\a^{[b\ mod\ \varphi(m)]+\varphi(m)}&b>\varphi(m)\end{cases} ab mod m=⎩⎪⎨⎪⎧ab mod φ(m)aba[b mod φ(m)]+φ(m)a⊥mb<φ(m)b>φ(m)
当 m m m 为素数时,即费马小定理 a p − 1 = 1 ( m o d p ) a^{p-1}=1(mod\ p) ap−1=1(mod p)
当 a ⊥ m a\bot m a⊥m 时,即欧拉定理 a φ ( m ) = 1 ( m o d m ) a^{\varphi(m)}=1(mod\ m) aφ(m)=1(mod m)
当 b > φ ( m ) b>\varphi(m) b>φ(m) 时:
∵ \because ∵ 若 x = y ( m o d m 1 ) , x = y ( m o d m 2 ) x=y(mod\ m_1),x=y(mod\ m_2) x=y(mod m1),x=y(mod m2) 且 m 1 ⊥ m 2 m_1\bot m_2 m1⊥m2,则 x = y ( m o d m 1 × m 2 ) x=y(mod\ m_1\times m_2) x=y(mod m1×m2)
∴ \therefore ∴ 只需要对质因数单独考虑。
假设当前考虑到 p i q i p_i^{q_i} piqi,分两种情况:
① p i ⊥ a p_i\bot a pi⊥a
∵ \because ∵ φ ( p i q i ) ∣ φ ( m ) \varphi(p_i^{q_i})|\varphi(m) φ(piqi)∣φ(m)(欧拉函数是积性函数)
∴ a φ ( m ) = 1 ( m o d p i q i ) \therefore a^{\varphi(m)}=1(mod\ p_i^{q_i}) ∴aφ(m)=1(mod piqi)
∴ a b = a ⌊ b φ ( m ) ⌋ φ ( m ) + b m o d φ ( m ) = a b m o d φ ( m ) × 1 = a [ b m o d φ ( m ) ] + φ ( m ) ( m o d p i q i ) \therefore a^b=a^{\lfloor \frac{b}{\varphi(m)} \rfloor\varphi(m)+b\ mod\ \varphi(m)}=a^{b\ mod\ \varphi(m)}\times 1=a^{[b\ mod\ \varphi(m)]+\varphi(m)}(mod\ p_i^{q_i}) ∴ab=a⌊φ(m)b⌋φ(m)+b mod φ(m)=ab mod φ(m)×1=a[b mod φ(m)]+φ(m)(mod piqi)
② p i ∣ a p_i|a pi∣a
∵ φ ( p i q i ) ∣ φ ( m ) , φ ( p i q i ) > q i \because \varphi(p_i^{q_i})|\varphi(m),\varphi(p_i^{q_i})>q_i ∵φ(piqi)∣φ(m),φ(piqi)>qi(易证)
∴ b > φ ( m ) > φ ( p i q i ) > q i \therefore b>\varphi(m)>\varphi(p_i^{q_i})>q_i ∴b>φ(m)>φ(piqi)>qi
∴ p i q i ∣ a b , p i q i ∣ a φ ( m ) \therefore p_i^{q_i}|a^b,p_i^{q_i}|a^{\varphi(m)} ∴piqi∣ab,piqi∣aφ(m)
∴ a b = 0 = a [ b m o d φ ( m ) ] + φ ( m ) ( m o d p i q i ) \therefore a^b=0=a^{[b\ mod\ \varphi(m)]+\varphi(m)}(mod\ p_i^{q_i}) ∴ab=0=a[b mod φ(m)]+φ(m)(mod piqi)
七、CRT/exCRT
①
x = a i ( m o d n i ) x=a_i(mod\ n_i) x=ai(mod ni)
x = a j ( m o d n j ) x=a_j(mod\ n_j) x=aj(mod nj)
n = ∏ n i , m i = n n i , m i − 1 × m i = 0 ( m o d n i ) n=\prod n_i,m_i=\frac{n}{n_i},m_i^{-1}\times m_i=0(mod\ n_i) n=∏ni,mi=nin,mi−1×mi=0(mod ni)
x = ∑ a i m i m i − 1 x=\sum a_im_im_i^{-1} x=∑aimimi−1
②ex
x = a i ( m o d n i ) x=a_i(mod\ n_i) x=ai(mod ni)
x = a j ( m o d n j ) x=a_j(mod\ n_j) x=aj(mod nj)
∴ \therefore ∴
x = p × n i + a i = q × n j + a j x=p\times n_i+a_i=q\times n_j+a_j x=p×ni+ai=q×nj+aj
p × n i − q × n j = a j − a i p\times n_i-q\times n_j=a_j-a_i p×ni−q×nj=aj−ai
∵ e x g c d \because exgcd ∵exgcd
∴ = > p , q , x \therefore=> p,q,x ∴=>p,q,x
∴ x = n i × p + a i ( m o d l c m ( n i , n j ) ) \therefore x=n_i\times p+a_i(mod\ lcm(n_i,n_j)) ∴x=ni×p+ai(mod lcm(ni,nj))
同理逐个代入。
inline ll exCRT(){
ll m=n[1],ans=a[1],x=0,y=0;
for(int i=1;i<=N;++i){
ll B=(a[i]-ans+n[i])%n[i],gcd=exgcd(m,n[i],x,y);
x=x*(B/gcd)%n[i];ans+=x*m;m*=n[i]/gcd;ans=(ans+m)%m;
}
return (ans+m)%m;
}
八、Lucas / exLucas
C n m m o d p = C ⌊ n p ⌋ ⌊ m p ⌋ × C n m o d p m m o d p m o d p C_n^m\mod p=C_{\lfloor \frac{n}{p}\rfloor}^{\lfloor \frac{m}{p}\rfloor}\times C_{n\mod p}^{m\mod p}\mod p Cnmmodp=C⌊pn⌋⌊pm⌋×Cnmodpmmodpmodp
证明:
∵ x p = x m o d p , C p m = 0 m o d p ( 0 < m < p ) \because x^p=x\mod p,C_p^m=0\mod p(0<m<p) ∵xp=xmodp,Cpm=0modp(0<m<p)
∴ \therefore ∴ ( 1 + x ) p = ∑ C p i x i = 1 + x p m o d p ( 1 + x ) n = ( 1 + x ) ⌊ n p ⌋ × p × ( 1 + x ) n m o d p ∑ C n i x i = ( ∑ C ⌊ n p ⌋ j x p ) × ( ∑ C n m o d p k x k ) (1+x)^p=\sum C_p^ix^i=1+x^p\mod p\\ (1+x)^n=(1+x)^{\lfloor \frac{n}{p}\rfloor \times p}\times (1+x)^{n\mod p}\\ \sum C_n^ix^i=(\sum C_{\lfloor \frac{n}{p}\rfloor}^jx^p)\times (\sum C_{n\mod p}^kx^k) (1+x)p=∑Cpixi=1+xpmodp(1+x)n=(1+x)⌊pn⌋×p×(1+x)nmodp∑Cnixi=(∑C⌊pn⌋jxp)×(∑Cnmodpkxk)
当且仅当 j = ⌊ n p ⌋ , k = n m o d p j=\lfloor \frac{n}{p}\rfloor,k=n\mod p j=⌊pn⌋,k=nmodp 时系数相等,即得证。
exLucas:
首先把 p p p 分解:
p = ∏ p i k i p=\prod p_i^{k_i} p=∏piki这样就可以单独处理质因子,最后用 CRT 解决。
考虑如何计算: C n m m o d p k C_n^m\mod p^{k} Cnmmodpk
C n m = n ! p a m ! p b × ( n − m ) ! p c × p a − b − c C_n^m=\frac{\frac{n!}{p^a}}{\frac{m!}{p^b}\times \frac{(n-m)!}{p^c}}\times p^{a-b-c} Cnm=pbm!×pc(n−m)!pan!×pa−b−c即为求解 n ! p a \frac{n!}{p^a} pan!
展开,如 19 ! m o d 3 2 = 1 × 2 × 3 × 4 × . . . × 19 = 1 × 2 × 4 × 5 × . . . × 17 × 19 × ( 3 × 6 × . . . × 18 ) 19!\mod 3^2=1\times 2\times 3\times 4\times...\times19=1\times 2\times4\times 5\times...\times 17\times 19\times(3\times 6\times...\times 18) 19!mod32=1×2×3×4×...×19=1×2×4×5×...×17×19×(3×6×...×18)
= 3 6 × ( 6 ! ) × 2 × 4 × 5 × . . . × 17 × 19 =3^6\times(6!)\times 2\times4\times 5\times...\times 17\times 19 =36×(6!)×2×4×5×...×17×19
可以发现,后面部分存在循环节为 2 × 4 × 5 × 7 × 8 2\times4\times 5\times 7\times 8 2×4×5×7×8,可以 O ( p k ) O(p^k) O(pk) 暴力计算,再快速幂计算循环节。前面阶乘递归计算。
九、常系数线性递推
二阶(如斐波那契数列):
a n = p × a n − 1 + q × a n − 2 a_n=p\times a_{n-1}+q\times a_{n-2} an=p×an−1+q×an−2
考虑构造 c x n = p × c x n − 1 + q × c x n − 2 cx^n=p\times cx^{n-1}+q\times cx^{n-2} cxn=p×cxn−1+q×cxn−2
最后即为 x 2 − p x − q = 0 x^2-px-q=0 x2−px−q=0
可解得两根 α , β \alpha,\beta α,β
所以 a n = A α n + B β n a_n=A\alpha^n+B\beta^n an=Aαn+Bβn
十、迪利克雷卷积
f ∗ g ( n ) = ∑ d ∣ n f ( d ) × g ( n d ) f*g(n)=\sum_{d|n}f(d)\times g(\frac{n}{d}) f∗g(n)=∑d∣nf(d)×g(dn)
i d = φ ∗ 1 id=\varphi*1 id=φ∗1
十一、整数分块
引理:
① ⌊ a b c ⌋ = ⌊ ⌊ a b ⌋ c ⌋ \lfloor \frac{a}{bc}\rfloor=\lfloor \frac{\lfloor \frac{a}{b}\rfloor}{c}\rfloor ⌊bca⌋=⌊c⌊ba⌋⌋
略证:把等式左边拆出 1 c \frac{1}{c} c1 ,设 a b = ⌊ a b ⌋ + r \frac{a}{b}=\lfloor \frac{a}{b}\rfloor+r ba=⌊ba⌋+r,把 r r r 忽略即可。
②构造 j = ⌊ n k ⌋ j=\lfloor \frac{n}{k}\rfloor j=⌊kn⌋,则 j j j为 ⌊ n i ⌋ = k \lfloor \frac{n}{i}\rfloor=k ⌊in⌋=k 中最大的。
证明:
j = ⌊ n k ⌋ , ⌊ n j ⌋ = ⌊ n ⌊ n i ⌋ ⌋ ≥ ⌊ n n i ⌋ = i j=\lfloor \frac{n}{k}\rfloor,\lfloor \frac{n}{j}\rfloor=\lfloor \frac{n}{\lfloor \frac{n}{i}\rfloor}\rfloor\geq\lfloor \frac{n}{\frac{n}{i}}\rfloor=i j=⌊kn⌋,⌊jn⌋=⌊⌊in⌋n⌋≥⌊inn⌋=i
∵ ⌊ n i ⌋ = k \because \lfloor \frac{n}{i}\rfloor=k ∵⌊in⌋=k
∴ k ≤ n i < k + 1 , 1 k + 1 < i n ≤ 1 k , i ≤ n k \therefore k\leq\frac{n}{i} <k+1,\frac{1}{k+1}<\frac{i}{n}\leq\frac{1}{k},i\leq\frac{n}{k} ∴k≤in<k+1,k+11<ni≤k1,i≤kn
∵ k ∣ n , j = n k \because k|n,j=\frac{n}{k} ∵k∣n,j=kn
∴ i m a x = j \therefore i_{max}=j ∴imax=j
注:整数分块可以用来求约数。
十二、莫比乌斯反演
证明来源
ϵ = μ ∗ 1 \epsilon=\mu*1 ϵ=μ∗1
证明:
设: n = ∏ i m p i k i n=\prod_i^m p_i^{k_i} n=i∏mpiki因为性质,所以
μ ∗ 1 \mu*1 μ∗1
= C m 0 − C m 1 + C m 2 − C m 3 . . . =C_m^0-C_m^1+C_m^2-C_m^3... =Cm0−Cm1+Cm2−Cm3...
= ∑ ( − 1 ) i C m i =\sum(-1)^iC_m^i =∑(−1)iCmi
= 0 m =0^m =0m
得证。
g = f ∗ 1 , g ∗ μ = f ∗ 1 ∗ μ = f ∗ ϵ g=f*1,g*\mu=f*1*\mu=f*\epsilon g=f∗1,g∗μ=f∗1∗μ=f∗ϵ
∴ f = g ∗ μ \therefore f=g*\mu ∴f=g∗μ
形式化为:
f ( n ) = ∑ d ∣ n g ( d ) × μ ( n d ) f(n)=\sum_{d|n}g(d)\times \mu(\frac{n}{d}) f(n)=d∣n∑g(d)×μ(dn)
常见函数及性质:
σ k ( n ) = ∑ d ∣ n d k , σ 0 ( n ) = τ ( n ) , σ 1 ( n ) = σ ( n ) \sigma_k(n)=\sum_{d|n}d^k,\sigma_0(n)=\tau(n),\sigma_1(n)=\sigma(n) σk(n)=∑d∣ndk,σ0(n)=τ(n),σ1(n)=σ(n)
加性函数: f ( a b ) = f ( a ) + f ( b ) f(ab)=f(a)+f(b) f(ab)=f(a)+f(b)
1 、 ϵ = μ ∗ 1 1、\epsilon=\mu*1 1、ϵ=μ∗1
2 、 d = 1 ∗ 1 = > d ( n ) = ∑ d ∣ n 1 = τ ( n ) 2、d=1*1=>d(n)=\sum_{d|n}1=\tau(n) 2、d=1∗1=>d(n)=∑d∣n1=τ(n)
3 、 σ = i d ∗ 1 = > σ ( n ) = ∑ d ∣ n d 3、\sigma=id*1=>\sigma(n)=\sum_{d|n}d 3、σ=id∗1=>σ(n)=∑d∣nd
4 、 i d = φ ∗ 1 4、id=\varphi*1 4、id=φ∗1
5 、 i d ∗ μ = φ ∗ 1 ∗ μ = φ 5、id*\mu=\varphi*1*\mu=\varphi 5、id∗μ=φ∗1∗μ=φ
6 、 F ( n ) = ∑ d ∣ n f ( n ) 6、F(n)=\sum_{d|n}f(n) 6、F(n)=∑d∣nf(n) 也是积性函数
gcd ( i , n ) = gcd ( n − i , n ) \gcd(i,n)=\gcd(n-i,n) gcd(i,n)=gcd(n−i,n)
线性筛积性函数:
推导思路:
例:如 F ( n ) = ∑ d ∣ n d φ ( d ) F(n)=\sum_{d|n}d\varphi(d) F(n)=d∣n∑dφ(d)先考虑单个质数幂的:
F ( p k ) = ∑ i k p i × p i − 1 ( p − 1 ) F(p^k)=\sum_{i}^kp^i\times p^{i-1}(p-1) F(pk)=i∑kpi×pi−1(p−1)可得: F ( p k + 1 ) = F ( p k ) + p 2 k + 1 ( p − 1 ) F(p^{k+1})=F(p^k)+p^{2k+1}(p-1) F(pk+1)=F(pk)+p2k+1(p−1)这时再考虑线性筛的过程处理 F ( i × p ) F(i\times p) F(i×p) 和 F ( i ) F(i) F(i) 的关系。
若 i ⊥ p i\bot p i⊥p,直接算 F ( i × p ) = F ( i ) × F ( p ) F(i\times p)=F(i)\times F(p) F(i×p)=F(i)×F(p)
若 p ∣ i p|i p∣i,那么设 i = a × p k i=a\times p^k i=a×pk 可得:
F ( i × p ) = F ( p k × a × p ) = F ( a ) × F ( p k + 1 ) F(i\times p)=F(p^k\times a\times p)=F(a)\times F(p^{k+1}) F(i×p)=F(pk×a×p)=F(a)×F(pk+1)同理:
F ( i ) = F ( a ) × F ( p k ) F(i)=F(a)\times F(p^k) F(i)=F(a)×F(pk)相减得:
F ( i × p ) − F ( i ) = F ( a ) × p 2 k + 1 × ( p − 1 ) F(i\times p)-F(i)=F(a)\times p^{2k+1}\times(p-1) F(i×p)−F(i)=F(a)×p2k+1×(p−1)同理:
F ( i ) − F ( i p ) = F ( a ) × p 2 k − 1 × ( p − 1 ) F(i)-F(\frac{i}{p})=F(a)\times p^{2k-1}\times (p-1) F(i)−F(pi)=F(a)×p2k−1×(p−1)相除得
F ( i × p ) = F ( i ) + p 2 × ( F ( i ) − F ( i p ) ) F(i\times p)=F(i)+p^2\times(F(i)-F(\frac{i}{p})) F(i×p)=F(i)+p2×(F(i)−F(pi))
即可递推求解。
//莫比乌斯函数
void getMu() {
mu[1] = 1;
for (int i = 2; i <= n; ++i) {
if (!flg[i]) p[++tot] = i, mu[i] = -1;
for (int j = 1; j <= tot && i * p[j] <= n; ++j) {
flg[i * p[j]] = 1;
if (i % p[j] == 0) {
mu[i * p[j]] = 0;
break;
}
mu[i * p[j]] = -mu[i];
}
}
}
莫比乌斯反演技巧:
1、 [ g c d ( i , j ) = = 1 ] = μ ∗ 1 ( g c d ( i , j ) ) [gcd(i,j)==1]=\mu*1(gcd(i,j)) [gcd(i,j)==1]=μ∗1(gcd(i,j))
2、把 μ \mu μ 放后(构造 μ ∗ 1 \mu*1 μ∗1)
4、最后再先枚举 μ \mu μ
3、利用 φ ∗ 1 = i d \varphi *1=id φ∗1=id,求 g c d ( i , j ) gcd(i,j) gcd(i,j) 时替换成求 ∑ d ∣ i , d ∣ j φ ( d ) \sum_{d|i,d|j}\varphi(d) ∑d∣i,d∣jφ(d)
5、例如 ∑ d ∣ i , d ∣ j f ( d ) \sum_{d|i,d|j}f(d) ∑d∣i,d∣jf(d) 或者 ∑ d ∣ gcd ( i , j ) \sum_{d|\gcd(i,j)} ∑d∣gcd(i,j) 时把 d d d 提前,把 i , j i,j i,j全部除掉 d d d。
6、出现两个无强相互限制的函数且可卷时如 : ∑ d n d ∑ t ⌊ n d ⌋ μ ( t ) \sum_{d}^nd\sum_t^{\lfloor \frac{n}{d}\rfloor}\mu(t) d∑ndt∑⌊dn⌋μ(t)可以考虑枚举 T = d t T=dt T=dt 构造 ∑ T n ∑ d ∣ T d × μ ( T d ) \sum_T^n\sum_{d|T}d\times \mu(\frac{T}{d}) T∑nd∣T∑d×μ(dT)这时再用 φ = μ ∗ i d \varphi=\mu*id φ=μ∗id 计算。
7、出现 g ( n ) = ∑ n ∣ d f ( d ) g(n)=\sum_{n|d}f(d) g(n)=∑n∣df(d) 时,且 f ( n ) f(n) f(n) 不好求但 g ( n ) g(n) g(n) 好求,可以转化为 f ( n ) = ∑ n ∣ d μ ( d n ) g ( d ) f(n)=\sum_{n|d}\mu(\frac{d}{n})g(d) f(n)=∑n∣dμ(nd)g(d)。思路类似容斥。
特殊形式:倍数反演
g ( n ) = ∑ n ∣ d f ( d ) , f ( n ) = ∑ n ∣ d μ ( d n ) g ( d ) g(n)=\sum_{n|d}f(d),f(n)=\sum_{n|d}\mu(\frac{d}{n})g(d) g(n)=n∣d∑f(d),f(n)=n∣d∑μ(nd)g(d) ∑ n ∣ d g ( d n ) μ ( d ) \sum_{n|d}g(\frac{d}{n})\mu(d) ∑n∣dg(nd)μ(d)
= ∑ k + ∞ g ( k n ) μ ( k ) =\sum_{k}^{+\infty}g(kn)\mu(k) =∑k+∞g(kn)μ(k)
= ∑ k + ∞ μ ( k ) ∑ k n ∣ d f ( d ) =\sum_{k}^{+\infty}\mu(k)\sum_{kn|d}f(d) =∑k+∞μ(k)∑kn∣df(d)
= ∑ n ∣ d f ( d ) ∑ k ∣ d n μ ( k ) =\sum_{n|d}f(d)\sum_{k|\frac{d}{n}}\mu(k) =∑n∣df(d)∑k∣ndμ(k)
= ∑ n ∣ d f ( d ) ϵ ( d n ) =\sum_{n|d}f(d)\epsilon(\frac{d}{n}) =∑n∣df(d)ϵ(nd)
= f ( n ) =f(n) =f(n)
扩展:
数论函数 f ( n ) , g ( n ) f(n),g(n) f(n),g(n) 和完全积性函数 t ( n ) t(n) t(n): f ( n ) = ∑ i n t ( i ) g ( ⌊ n i ⌋ ) f(n)=\sum_i^nt(i)g(\lfloor \frac{n}{i}\rfloor) f(n)=i∑nt(i)g(⌊in⌋)等价于 g ( n ) = ∑ i n μ ( i ) t ( i ) f ( ⌊ n i ⌋ ) g(n)=\sum_i^n\mu(i)t(i)f(\lfloor \frac{n}{i}\rfloor) g(n)=i∑nμ(i)t(i)f(⌊in⌋)证明:咕咕。
例题:
约数个数和
Problem b
GCDLCM
求和(未)
KC学数论(未)
十三、杜教筛
求 S ( n ) = ∑ i f ( i ) S(n)=\sum_if(i) S(n)=∑if(i)
考虑 ∑ i f ∗ g ( i ) = ∑ i ∑ x y = i f ( x ) g ( y ) = ∑ y g ( y ) ∑ x ⌊ n y ⌋ f ( x ) = ∑ y g ( y ) S ( ⌊ n y ⌋ ) \sum_if*g(i)=\sum_{i}\sum_{xy=i}f(x)g(y)=\sum_yg(y)\sum_x^{\lfloor \frac{n}{y}\rfloor}f(x)=\sum_yg(y)S(\lfloor \frac{n}{y}\rfloor) ∑if∗g(i)=∑i∑xy=if(x)g(y)=∑yg(y)∑x⌊yn⌋f(x)=∑yg(y)S(⌊yn⌋)
这样可得 g ( 1 ) S ( n ) = ∑ i f ∗ g ( i ) − ∑ y = 2 n g ( y ) S ( ⌊ n y ⌋ ) g(1)S(n)=\sum_if*g(i)-\sum_{y=2}^ng(y)S(\lfloor \frac{n}{y}\rfloor) g(1)S(n)=∑if∗g(i)−∑y=2ng(y)S(⌊yn⌋)
只要 f ∗ g , g f*g,g f∗g,g 前缀和很好求,那么预处理 O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32) 之后得再数论分块+记忆化搜索即可轻松过掉 1 0 10 10^{10} 1010 的数据。
例题:
最大公约数
十四、原根