zoukankan      html  css  js  c++  java
  • 数论出题组比赛用题:公约数

    T4:公约数

    思考难度:提高?

    代码难度:省选-?

    算法1:暴力计算

    实际得分:10

    算法2:

    首先gcd(ij,ik,jk)=gcd(i,j)×gcd(i,k)×gcd(j,k)gcd(i,j,k)gcd(icdot j,icdot k,jcdot k)=frac{gcd(i,j) imes gcd(i,k) imes gcd(j,k)}{gcd(i,j,k)}

    所以原式=i=1nj=1mk=1p(gcd2(i,j)+gcd2(i,k)+gcd2(j,k))=sum_{i=1}^nsum_{j=1}^msum_{k=1}^p(gcd^2(i,j)+gcd^2(i,k)+gcd^2(j,k))

    考虑一个式子i=1nj=1mgcd2(i,j)=d=1min(n,m)xdd2μ(xd)sum_{i=1}^nsum_{j=1}^mgcd^2(i,j)=sum_{d=1}^{min(n,m)}sum_{x|d}d^2muleft(frac{x}{d} ight)

    考虑对后面的sum分块计算,O(n+Tnn)O(n+Tcdot nsqrt{n})

    实际得分:30

    算法3:

    发现前面的sum也可以分块,O(n+Tn)O(n+Tcdot n)

    实际得分:50

    算法4:

    考虑令f(x)=x2,g(x)=μ(x)f(x)=x^2,g(x)=muleft({x} ight),计算这两个函数的狄利克雷卷积h(x)h(x),再对h(x)h(x)分块计算,O(n+Tn)O(n+Tcdot sqrt{n})

    实际得分:100

    算法5:

    杜教筛一下,把预处理复杂度由O(n)O(n)降低为O(n23)O(n^{frac{2}{3}})我太懒了没有学杜教筛

    实际得分:100

  • 相关阅读:
    sfs2x 连接 mongodb
    java websocket
    webstorm 4.0 注册码
    解决 sfs2 admin tool 找不到扩展
    window 注册表五大类
    opengl 学习第二日
    java google Protobuf
    扩展 java sencha touch PhonegapPlugin
    sencha touch2 kryonet socket phonegap 通信 作者:围城
    sencha touch2 layout 笔记
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/10834259.html
Copyright © 2011-2022 走看看