- 我的csdn和博客园是同步的,欢迎来访danzh-博客园~
欢迎关注~
1.中间式子&常用技巧
[ n = = 1 ] = ∑ d ∣ n μ ( d ) [n==1]=\sum_{d|n}\mu (d) [n==1]=d∣n∑μ(d)
这个式子用来替换条件式,从而降低复杂度
∑ i = 1 n ∑ j = 1 [ n i ] f ( i ) = ∑ i = 1 n ∑ j = 1 [ n i ] f ( j ) \sum_{i=1}^n\sum_{j=1}^{[\frac ni]}f(i)=\sum_{i=1}^n\sum_{j=1}^{[\frac ni]}f(j) i=1∑nj=1∑[in]f(i)=i=1∑nj=1∑[in]f(j)
被加数可以任意以 i i i或 j j j作为索引
∑ i = 1 n ∑ j = 1 [ n i ] f ( i j ) ∗ g ( i ) ∗ h ( j ) = ∑ k = 1 n f ( k ) ∗ ∑ d ∣ k g ( [ k d ] ) h ( d ) \sum_{i=1}^n\sum_{j=1}^{[\frac ni]}f(ij)*g(i)*h(j)=\sum_{k=1}^nf(k)*\sum_{d|k}g([\frac kd])h(d) i=1∑nj=1∑[in]f(ij)∗g(i)∗h(j)=k=1∑nf(k)∗d∣k∑g([dk])h(d)
令 k = i j k=ij k=ij,然后枚举 k k k。这里的 i i i可以不从1枚举到n,可以是任意数,前提是保证后面的d和i性质一样(比如i是[1,n]范围内的质数,那么d|k且d是质数),且计算时保证关于i的函数和关于d的函数是同一性质(还是刚才的例子,式子左边是g(i),右边以d作为自变量的也应该是g而不应该是h,但如果i是顺序从1枚举到n则没有这个限制)
g c d ( i , j ) = ∑ d ∣ i 且 d ∣ j ϕ ( d ) gcd(i,j)=\sum_{d|i且d|j}\phi(d) gcd(i,j)=d∣i且d∣j∑ϕ(d)
可以用这个式子去反演更简单
∑ i = 1 n d f ( i d ) \sum_{i=1}^{\frac nd}f(id) i=1∑dnf(id)
要知道这里的枚举的是d的所有倍数。首先明确上限如果除以了某个数d,那么索引i枚举的就是id<=n的所有i,id就是d的所有倍数
2. g c d gcd gcd
∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = = x ] = 2 ∗ p r e ϕ ( [ n x ] ) − 1 \sum_{i=1}^{n}\sum_{j=1}^n[gcd(i,j)==x]=2*pre\phi([\frac nx]) -1 i=1∑nj=1∑n[gcd(i,j)==x]=2∗preϕ([xn])−1
∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = x ] = ∑ d = 1 [ n x ] ( μ ( d ) ∗ [ n d x ] ∗ [ m d x ] ) \sum_{i=1}^{n}\sum_{j=1}^m[gcd(i,j)==x]=\sum_{d=1}^{[\frac nx]}\left( \mu(d)*[\frac {n}{dx}]*[\frac {m}{dx}]\right) i=1∑nj=1∑m[gcd(i,j)==x]=d=1∑[xn](μ(d)∗[dxn]∗[dxm])
∑ i = 1 n ∑ j = 1 n g c d ( i , j ) = ∑ d = 1 n ( 2 d ∗ p r e ϕ [ n x ] − d ) = ∑ d = 1 n μ ( d ) [ n d ] 2 \sum_{i=1}^{n}\sum_{j=1}^ngcd(i,j)=\sum_{d=1}^n\left(2d*pre\phi[\frac nx]-d\right)=\sum_{d=1}^n\mu(d)[\frac nd]^2 i=1∑nj=1∑ngcd(i,j)=d=1∑n(2d∗preϕ[xn]−d)=d=1∑n</