• Noi2016 循环之美


    题意相当于求如下式子 $$ sum _{i=1}^{n} sum_{j=1}^{m} [gcd(i,j)=1][gcd(j,k)=1] \ k <= 1000 ; n,m <= 10^9 $$ 化简一下: $$ egin{aligned} & sum_d mu(d) * sum _{j=1}^{lfloor frac{m}{d} floor} [gcd(d*j,k)=1] \ & = sum_d mu(d)[gcd(d,k)=1] * sum _{j=1}^{lfloor frac{m}{d} floor} [gcd(j,k)=1] end{aligned} $$ 发现我们需要求两个前缀和 $$ f(i) = sum_{i=1}^{n} mu(i)[gcd(i,k)=1] $$ $$ g(i) = sum_{i=1}^{n}[gcd(i,k)=1] $$ 求g枚举k的约数就行了 具体如下 $$ egin{aligned} g(i) & = sum_{i=1}^{n}[gcd(i,k)=1] \ & = sum _{d|k} mu(d) {lfloor frac{n}{d} floor} end{aligned} $$ 现在考虑如何求f,多加一个元 $$ egin{aligned} S(i,k) & = sum_{i=1}^{n} mu(i)[gcd(i,k)=1] \ & =sum _{d|k} mu(d) * sum _{j=1}^{{lfloor frac{n}{d} floor}} mu (d*j) \ & =sum _{d|k} mu(d) * sum _{j=1}^{{lfloor frac{n}{d} floor}} mu (d) * mu(j) [gcd(d,j)=1] \ & =sum _{d|k} mu(d)^2 * sum _{j=1}^{{lfloor frac{n}{d} floor}}mu(j) [gcd(d,j)=1] \ & =sum _{d|k} mu(d)^2 * S({{lfloor frac{n}{d} floor}},d) end{aligned} $$ 边界是$k=1$的时候,这个时候可以杜教筛求解。 然后这题就完了
  • 相关阅读:
    中山游记
    半僧
    脾气
    当奶猫来敲门
    《易经》初识
    读《动物农庄》
    update layer tree导致页面卡顿
    读《解忧杂货店》
    看小说与写小说
    做程序员的这五年
  • 原文地址:https://www.cnblogs.com/weiyanpeng/p/10982210.html
Copyright © 2020-2023  润新知