一、素数判定 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 的数据。
例题:
最大公约数
十四、原根