- Stern-Brocot Tree (SB树)

- 例题:BZOJ2852:给两个有理数 a,b, 求最小的正整数 k, 使得 (ak,bk) 里有整数。a, b 整数部分不超过 231, 小数位数不超过 300 位。
莫比乌斯反演
- 数论函数:定义域在正整数域上的函数。
- 积性函数:(a,b)=1,则f(ab)=f(a)f(b)(φ,μ,dk(n)最后那个是除数函数)
- 完全积性函数:f(ab)=f(a)f(b)(I,id,ϵ)
- Dirichlet卷积。(f∗g)(n)=∑d∣nf(d)g(dn),满足交换律结合律分配律。且如果f,g为积性函数,那么f∗g也为积性函数。
- e(n)=∑d∣nμ(d)=[n==1]e=μ∗I
- 若f(n)=∑d∣ng(d),则g(n)=∑d∣nf(d)μ(dn)
即f=g∗I→f∗μ=g∗I∗μ=g
- 简单例题:∑i=1n∑j=1mf(gcd(i,j))
-
=∑i=1min(n,m)g(i)⌊in⌋⌊im⌋,其中g(i)=∑d∣iμ(d)
- 简单例题:SPOJ LCMSUM
-
,n≤500000,T≤500000
- 显然答案等于∑d=1nd2f(⌊dn⌋),f(n)=∑i=1n∑j=1nlcm(i,j)

- 一个人的数论:
- 怎样跑得更快:n≤105;c,d≤109,现有序列b满足bi≡∑j=1ngcd(i,j)c⋅lcm(i,j)d⋅zj(mod 998244353),求z,无解输出−1。
杜教筛
都会就略了。上个图。

第一个式子变化基于f(x)g(y)会有贡献当且仅当xy≤n。
Min_25筛






-
GCD Array

建立辅助数组f使得a(i)=∑j∣if(j)。
[(x,n)==d]⋅v=[(dx,dn)==1]⋅v=v⋅k∣dx,dn∑μ(k)=k∣dn,dk∣x∑v⋅μ(k)
每次修改相当于枚举k∣dn,然后给f[dk]+=v⋅μ(k)
查询答案为∑i=1xa(i)=∑i=1x∑d∣if(d)=∑d=1xf(d)⌊dx⌋
可以分块统计,用树状数组维护f的前缀和。
-
简单题:S(n)=∑i=1n∑j=1nd(ij),n≤1010
-

- 有μ2(i)=∑d2∣iμ(d),所以∑i=1nμ2(i)=∑i=1n∑d2∣iμ(d)=∑d=1nμ(d)⌊d2n⌋.
- 暴力是根号的,整除分块一下能跑过1018。整除分块的块数是O(n31)因为d<n31只有n31种;d>n31时,⌊d2n⌋≤n31。最后再加上杜教筛的时间复杂度。最后时间复杂度算出来是O(n73)
相关文章: