杂题收录+简要题解4

hdu 6868 Absolute Math

f ( n ) = ∑ d ∣ n ∣ μ ( d ) ∣ f(n)=\sum_{d|n}|\mu(d)| f(n)=dnμ(d)。每次给定 n , m n,m n,m,求 ∑ i = 1 m f ( n i ) \sum_{i=1}^mf(ni) i=1mf(ni)

n , m ≤ 1 0 7 , T ≤ 1 0 4 n,m\le 10^7,T\le 10^4 n,m107,T104

注意到 f ( n ) = 2 ω ( n ) f(n)=2^{\omega(n)} f(n)=2ω(n),其中 ω ( n ) \omega(n) ω(n) 表示 n n n 的素因数个数。那么 f ( n i ) = f ( n ) f ( i ) f ( gcd ⁡ ( n , i ) ) f(ni)=\frac{f(n)f(i)}{f(\gcd(n,i))} f(ni)=f(gcd(n,i))f(n)f(i)。若令 g = 1 f × μ g=\frac{1}{f}\times \mu g=f1×μ,其中 × \times × 表示迪利克雷卷积,那么 f ( n i ) = f ( n ) f ( i ) f ( gcd ⁡ ( n , i ) ) = f ( n ) f ( i ) ∑ d ∣ n , d ∣ i g ( d ) f(ni)=\frac{f(n)f(i)}{f(\gcd(n,i))}=f(n)f(i)\sum_{d|n,d|i}g(d) f(ni)=f(gcd(n,i))f(n)f(i)=f(n)f(i)dn,dig(d)

答案就等于 f ( n ) ∑ d ∣ n g ( d ) ∑ i = 1 ⌊ m d ⌋ f ( d i ) f(n)\sum_{d|n}g(d)\sum_{i=1}^{\lfloor\frac{m}{d}\rfloor}f(di) f(n)dng(d)i=1dmf(di)

可以先把 f , g f,g f,g 通过线性筛求出,然后离线按 m m m 从小到大来维护最后一个求和式,就只需要 O ( n ) O(n) O(n) 的空间复杂度,时间复杂度为 O ( n log ⁡ n + ∑ σ 0 ( n ) ) O(n\log n+\sum \sigma_0(n)) O(nlogn+σ0(n))

你可能感兴趣的:(题解)