zoukankan      html  css  js  c++  java
  • BZOJ:4659&&BZOJ:2694: Lcm

    Description

    给出A,B,考虑所有满足l<=a<=A,l<=b<=B,且不存在n>1使得n^2同时整除a和b的有序数
    对(a,b),求其lcm(a,b)之和。答案模2^30。

    Input

    第一行一个整数T表示数据组数。接下来T行每行两个整数A,B表示一组数据。
    T ≤ 2000,A,B ≤ 4 × 10^6

    Output

    对每组数据输出一行一个整数表示答案模2^30的值

    Sample Input

    5
    2 2
    4 6
    3 4
    5 1
    23333 33333

    Sample Output

    7
    148
    48
    15
    451085813
     
     
    好久没更过博客惹……
    这题的话肯定是先式子一波推辣!
    $ sum_{i=1}^{A}sum_{j=1}^{B} [gcd(i,j)无平方因子] lcm(i,j) $
    $ =sum_{i=1}^{A}sum_{j=1}^{B} μ(gcd(i,j))^2 frac{i*j}{gcd(i,j)} $
    $ =sum_{d=1}^{A} μ(d)^2*d sum_{i=1}^{leftlfloorfrac{A}{d} ight floor} sum_{j=1}^{leftlfloorfrac{B}{d} ight floor} [gcd(i,j)==1] i*j $
    $ =sum_{d=1}^{A} μ(d)^2*d sum_{D=1}^{leftlfloorfrac{A}{d} ight floor} μ(D)*D^2*f(leftlfloorfrac{A}{d*D} ight floor)*f(leftlfloorfrac{B}{d*D} ight floor) $
    其中$f(x)=frac{x(x+1)}{2}$
    (诶,这式子可以看吧……
     
    一开始就推到这里,感觉复杂度$O(n^{frac{2}{3}})$应该差不多,然后就交了两发T……
    回来继续推式子吧。
    发现与A,B相关的项都只与$d*D$有关,那么试着预处理出每个$d*D$的系数,暴力$Aln(A)$预处理,答案可以$sqrt{A}$的复杂度计算。这样一来所有计算都在预处理上了,交了一发31s卡了过去。
    可是这样不优雅!
    发现预处理出的系数数组其实是两个积性函数的卷积,那么它也是个积性函数。
    打一下表找到质数及其幂位置的规律然后就可以辣,8.6s!
    写完感觉这题好良心,用多组数据限制A和B的大小,如果只有单组数据然后A和B很大似乎就得想办法杜教筛或者洲阁筛了呢。
    式子都在上边我就不丢代码惹……
  • 相关阅读:
    移动网页如何只调出数字键盘
    把HTML5网页封装成APP,APK的方法
    HTML5,微信开发原码社区
    display:table 水平居中
    input在苹果浏览器下变成圆角的解决方案
    四种方法解决DIV高度自适应问题
    jquery prop和attr的区别
    移动端网页JS框架-手机触摸事件框架,日历框架带滑动效果
    meta viewport标签的使用说明(手机浏览缩放控制)
    javascript json格式解析方法
  • 原文地址:https://www.cnblogs.com/Enceladus/p/6097660.html
Copyright © 2011-2022 走看看