zoukankan      html  css  js  c++  java
  • 推式子

    (sum_isum_j[lcm(i,j)=n],nin[1,1e8])

    (=sum_{i=1}^nsum_{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}^nsum_{i=1}^ksum_{j=1}^kgcd(i,j,k))

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

    • 法一

    最后一个式子(sum_{T=1}^nT^2sum_{k=1}^{lfloorfrac nT floor}phi(k))

    整数分块+杜教筛(phi)

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

    [lfloorfrac{lfloorfrac ab floor}{c} floor=lfloorfrac a{bc} floor ]

    • 法二

    倒数第二个式子(sum_{k=1}^nsum_{T|k}T^2phi(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}^nsum_{j=1}^n[ij<=n]i^2j ]

    [sum_{i=1}^nsigma(i)=sum_{i=1}^nsum_{d|i}d=sum_{d=1}^ndlfloorfrac nd floor ]

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

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

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

  • 相关阅读:
    HDU 5135(再思考)
    HDU 5105
    HDU 5135
    Codeforces 985E
    Codeforces 985D
    Codeforces 975D
    Codeforces 975C
    Codeforces 976D
    HDU 1024 Max Sum Plus Plus (DP,水题)
    HDU 1003 Max Sum(DP,水题)
  • 原文地址:https://www.cnblogs.com/aurora2004/p/12582040.html
Copyright © 2011-2022 走看看