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

  • 相关阅读:
    base64加密/解密
    js split 的用法和定义 js split分割字符串成数组的实例代码
    js获取html5 audio 音频时长方法
    获取虾米音乐的歌词
    ajax请求QQ音乐
    MarkdownPad2.5 注册码
    neovim 使用
    tmux的使用方法和个性化配置
    linux 安装libevent
    boost.sha1
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/10834259.html
Copyright © 2011-2022 走看看