推式子

\(\sum_i\sum_j[lcm(i,j)=n],n\in[1,1e8]\)

\(=\sum_{i=1}^n\sum_{j=1}^n[i*j=n*gcd(i,j)]\)

\(=\sum_{d|n}\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}[i*j=\frac n d \&\&gcd(i,j)=1]\)

\(=\sum_{d|n} f(d),f(n)=2^{n的不同质因数的个数}\)

时间复杂度\(O(n)\)

\(ans=\sum_{k=1}^n\sum_{i=1}^k\sum_{j=1}^kgcd(i,j,k)\)

\((Id^2)*\phi\)怎么杜教筛?

  • 法一

最后一个式子\(\sum_{T=1}^nT^2\sum_{k=1}^{\lfloor\frac nT\rfloor}\phi(k)\)

整数分块+杜教筛\(\phi\)

虽说是求了\(\sqrt n\)次但实际只有\(2\sqrt n\)个值有用,况且算\(S(n)\)会把这些值都算一遍

\[\lfloor\frac{\lfloor\frac ab\rfloor}{c}\rfloor=\lfloor\frac a{bc}\rfloor \]

  • 法二

倒数第二个式子\(\sum_{k=1}^n\sum_{T|k}T^2\phi(\frac k T)\)

\[Id^2*\phi*1=Id^2*Id,g(i)=1,h(i)=\sum_{d|i}d^2*\frac id \]

\[\sum_{u=1}^n h(u)=\sum_{i=1}^n\sum_{j=1}^n[ij<=n]i^2j \]

\[\sum_{i=1}^n\sigma(i)=\sum_{i=1}^n\sum_{d|i}d=\sum_{d=1}^nd\lfloor\frac nd\rfloor \]

可以整除分块\(\sqrt n\)做(本来每层算S也要\(\sqrt n\)

预处理后时间复杂度\(O(n^{\frac23})\)

复杂度证明:?暂且当$ \sum_i^n i^{alpha} = O(n^{1+alpha})$

posted @ 2020-03-27 16:00  starusc  阅读(147)  评论(0)    收藏  举报