数论杂题笔记
CF338D GCD Table
先考虑如果会出现,那么会出现在哪一行,因为行数是所有 a a a 的倍数,显然直接 l c m ( a ) lcm(a) lcm(a) 最优。
a[i] 的列数设为 y + i y+i y+i ,那么有 a [ i ] ∣ y + i a[i]|y+i a[i]∣y+i 那么就有 $n $个同余方程,解出来最小的 y y y 显然最优。最后验算一下就做完了。
51nod 1042
a n s = ∑ i = a b i b / gcd ( i , b ) = ∑ i = a b i b ∑ t 1 / t [ gcd ( i , b ) = t ] = ∑ i = a b i b ∑ t ∣ i , t ∣ b f ( t ) = b ∑ t ∣ b f ( t ) ∑ t ∣ i i \begin{aligned} ans&=\sum_{i=a}^b ib/\gcd(i,b) \\ &=\sum_{i=a}^b ib \sum_{t}1/t[\gcd(i,b)=t] \\ &=\sum_{i=a}^{b} ib \sum_{t|i,t|b}f(t) \\ &=b\sum_{t|b}f(t)\sum_{t|i} i \end{aligned} ans=i=a∑bib/gcd(i,b)=i=a∑bibt∑1/t[gcd(i,b)=t]=i=a∑bibt∣i,t∣b∑f(t)=bt∣b∑f(t)t∣i∑i
∑ t ∣ i i \sum_{t|i} i ∑t∣ii 就很好求,就是 a a a 到 b b b 中 t t t 的倍数的和。
思考我们临时设的函数 f f f ,他要满足 ∑ t ∣ s f ( t ) = 1 / s \sum_{t|s}f(t)=1/s ∑t∣sf(t)=1/s
这个其实就挺简单了,当然可以直接大力算。
最后枚举 t t t 加答案即可。
51nod 1227
f ( n ) = 1 n ∑ i = 1 n l c m ( i , n ) = ∑ d ∣ n ∑ i i / d [ gcd ( i , n ) = d ] = ∑ d ∣ n ∑ i = 1 ⌊ n / d ⌋ i [ gcd ( i d , n ) = d ] = ∑ d ∣ n ∑ i = 1 ⌊ n / d ⌋ i [ gcd ( i , n / d ) = 1 ] 因 为 有 ∑ i = 1 n i [ gcd ( i , n ) = 1 ] = n φ ( n ) + [ n = 1 ] 2 f ( n ) = 1 2 ( 1 + ∑ d ∣ n d φ ( d ) ) \begin{aligned} f(n)&=\frac{1}{n} \sum_{i=1}^nlcm(i,n) \\ &=\sum_{d|n}\sum_ii/d[\gcd(i,n)=d] \\ &=\sum_{d|n}\sum_{i=1}^{\lfloor n/d\rfloor}i[\gcd(id,n)=d] \\ &=\sum_{d|n}\sum_{i=1}^{\lfloor n/d\rfloor}i[\gcd(i,n/d)=1] \\ &因为有\sum_{i=1}^{n}i[\gcd(i,n)=1]=\frac{n\varphi(n)+[n=1]}2 \\ f(n)&=\frac{1}2(1+\sum_{d|n}d\varphi(d)) \end{aligned} f(n)f(n)=n1i=1∑nlcm(i,n)=d∣n∑i∑i/d[gcd(i,n)=d]=d∣n∑i=1∑⌊n/d⌋i[gcd(id,n)=d]=d∣n∑i=1∑⌊n/d⌋i[gcd(i,n/d)=1]因为有i=1∑ni[gcd(i,n)=1]=2nφ(n)+[n=1]=21(1+d∣n∑dφ(d))
求前缀和的话就是 a n s = ∑ d = 1 n d φ ( d ) ⌊ n / d ⌋ ans=\sum_{d=1}^{n}d\varphi(d)\lfloor n/d\rfloor ans=∑d=1ndφ(d)⌊n/d⌋。对求 d φ ( d ) d\varphi(d) dφ(d) 前缀和就是杜教筛模板了。
project euler 530
a n s = ∑ i = 1 n ∑ d ∣ i gcd ( d , i / d ) = ∑ i = 1 n ∑ d ∣ i ∑ h ∣ d , i / d φ ( h ) = ∑ h φ ( h ) ∑ a , b ≥ 1 [ a b ≤ n / h 2 ] \begin{aligned} ans&=\sum_{i=1}^n \sum_{d|i}\gcd(d,i/d) \\ &=\sum_{i=1}^n \sum_{d|i}\sum_{h|d,i/d} \varphi(h) \\ &=\sum_h\varphi(h)\sum_{a,b\ge 1}[ab\le n/h^2] \end{aligned} ans=i=1∑nd∣i∑gcd(d,i/d)=i=1∑nd∣i∑h∣d,i/d∑φ(h)=h∑φ(h)a,b≥1∑[ab≤n/h2]
暴力枚举 h h h ,对于每个 h h h 右边根号算。然后就做完了,时间复杂度不会算,反正它跑了519366769次,快得一p。
51nod 1847
(对这道题真的很无语
(反正是我蒻就对了2333
给出一个结论:若 i i i , j j j 不互质 ,则 s g c d ( i , j ) = gcd ( i , j ) / m i n p ( g c d ( i , j ) ) sgcd(i,j)=\gcd(i,j)/minp(gcd(i,j)) sgcd(i,j)=gcd(i,j)/minp(gcd(i,j)) 。
那么答案就是
∑ i = 2 n ( i m i n p ( i ) ) k ( 2 ∑ i = 1 n / i φ ( i ) − 1 ) \sum_{i=2}^{n}{(\frac{i}{minp(i)})}^k(2\sum_{i=1}^{n/i}\varphi(i)-1) ∑i=2n(minp(i)i)k(2∑i=1n/iφ(i)−1)
后面杜教筛,前面min25筛,结束。
cometoj 1098
”即便它再像一个能筛的函数,也要先推它的定义式“。——未来哲学家yxy
若
x
=
∏
p
i
e
i
x =\prod p_i^{e_i}
x=∏piei
f
(
x
)
=
∏
p
i
⌊
e
i
/
2
⌋
=
x
∏
p
i
⌈
e
i
/
2
⌉
=
∑
j
=
1
x
[
∏
i
=
1
k
p
i
⌈
e
i
/
2
⌉
∣
j
]
=
∑
j
=
1
x
[
x
∣
j
2
]
\begin{aligned} f(x) &=\prod p_i^{\lfloor e^i/2\rfloor} \\ &=\frac{x}{\prod p_i^{\lceil e^i/2\rceil}} \\ &=\sum_{j=1}^{x}[\prod_{i=1}^kp_i^{\lceil e^i/2\rceil}|j] \\ &=\sum_{j=1}^x[x|j^2] \end{aligned}
f(x)=∏pi⌊ei/2⌋=∏pi⌈ei/2⌉x=j=1∑x[i=1∏kpi⌈ei/2⌉∣j]=j=1∑x[x∣j2]
第二部到第三步用了的除法的定义
a
b
=
∑
i
=
1
a
[
b
∣
i
]
\frac{a}{b}=\sum_{i=1}^a[b|i]
ba=∑i=1a[b∣i] ,意思是
a
a
a 里面有多少个
b
b
b 的倍数。
最后一步意思是当 a ∣ b a|b a∣b ,当且仅当 a 2 ∣ b 2 a^2|b^2 a2∣b2 (就**离谱。
考虑求前缀和,我们知道 f ( x ) f(x) f(x) 是积性函数,且 f ( p ) = 1 , p ∈ P r i m e f(p)=1,p\in Prime f(p)=1,p∈Prime 。
powerful number筛,结束。