Description 求
∑i=ab1n∑j=1ilcm(i,j)∑ i = a b 1 n ∑ j = 1 i l c m ( i , j )
Solution 明天回家,现在有点浑浑噩噩
终于推出了与题解一致的柿子,so moved
照例推柿子,区间可以变成前缀和之差,枚举gcd
ans=∑d=1b∑i=1?bd?∑j=1ij?[gcd(i,j)=1]a n s = ∑ d = 1 b ∑ i = 1 ? b d ? ∑ j = 1 i j ? [ gcd ( i , j ) = 1 ]
然后后面这一坨实际上就是 ∑ni=1i?[gcd(n,i)=1]=φ(n)?n2∑ i = 1 n i ? [ g c d ( n , i ) = 1 ] = φ ( n ) ? n 2的应用,带进去就得到 ans=∑d=1b∑i=1?bd?φ(i)?i2a n s = ∑ d = 1 b ∑ i = 1 ? b d ? φ ( i ) ? i 2
需要注意的是当i=1的时候后面的贡献应当是1但是柿子体现不出来,需要我们单独加上去。这个和除二一起先不管
令 S(n)=sumni=1φ(i)?iS ( n ) = s u m i = 1 n φ ( i ) ? i,那么 ans=b+12∑d=1bS(?bd?)a n s = b + 1 2 ∑ d = 1 b S ( ? b d ? )
然后问题就变成了怎么求 S(n)S ( n ),这个是非常经典的杜教筛问题我就不写了 【c++|51nod 1227 平均最小公倍数 杜教筛】
Code
#include
#include
#include
推荐阅读