首先转换一下,考虑 2f(i) 的组合意义。
相当于把 i 的不同质因子分别分到两个数里面。
于是 2f(i)=∑d|i[gcd(d,id)=1]。
于是就简单了。 n∑i=1∑d|i[gcd(d,id)=1]=n∑d=1∑id≤n[gcd(d,i)=1]=n∑d=1∑id≤n∑k|gcd(d,i)μ(k)=∑k2≤nμ(k)∑ik2≤n⌊nik2⌋=⌊√n⌋∑k=1μ(k)⌊nk2⌋∑i=1⌊nik2⌋
枚举 k 然后数论分块算后面的式子就好了,大概是 O(√nlogn) 的样子?
注意取模呀……n 是会爆模数的……
代码:
1 |
|