zoukankan      html  css  js  c++  java
  • 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$的时候,这个时候可以杜教筛求解。 然后这题就完了
  • 相关阅读:
    根据表生成接收(zml)
    删除指定日期,指定设备的排产记录(zml)
    1029 Median
    1027 Colors in Mars (20 分)进制转换
    1028 List Sorting 排序
    1025 PAT Ranking
    1024 Palindromic Number(大数加法)
    1023 Have Fun with Numbers
    1022 Digital Library
    逆序打印乘法表
  • 原文地址:https://www.cnblogs.com/weiyanpeng/p/10982210.html
Copyright © 2011-2022 走看看