题链:

http://www.lydsy.com/JudgeOnline/problem.php?id=2694

题解:

莫比乌斯反演

不难看出,造成贡献的(i,j)满足gcd(i,j)无平方因子。

其实也就是$\mu(gcd(i,j))!=0$

先列出求ANS的式子

$\begin{align*}ANS&=\sum_{a=1}^{A}\sum_{b=1}^{B} lcm(a,b)\mu(gcd(a,b))^2\;(同样的,先枚举gcd的值g)\\&=\sum_{g=1}^{min(A,B)} \mu(g)^2\times g\sum_{d=1}^{min(\frac{A}{g},\frac{B}{g})}\mu(d) d^2 \times sum(\lfloor \frac{A}{gd} \rfloor)sum(\lfloor \frac{B}{gd} \rfloor)\\&(sum(x)=\frac{(1+n)n}{2})\end{align*}$

上式的$g\sum_{d=1}^{min(\frac{A}{g},\frac{B}{g})}\mu(d)d^2 \times sum(\lfloor \frac{A}{gd} \rfloor)sum(\lfloor \frac{B}{gd} \rfloor)$是求满足gcd(i,j)=g的lcm(i,j)之和,详见●BZOJ 2154 Crash的数字表格

我们继续:

$\begin{align*}ANS&=\sum_{g=1}^{min(A,B)} \mu(g)^2\times g\sum_{d=1}^{min(\frac{A}{g},\frac{B}{g})}\mu(d) d^2 \times sum(\lfloor \frac{A}{gd} \rfloor)sum(\lfloor \frac{B}{gd} \rfloor)\\&=\sum_{D=gd=1}^{min(A,B)}sum(\lfloor \frac{A}{D} \rfloor)sum(\lfloor \frac{B}{D} \rfloor)\sum_{g|D}\mu(g)^2g\cdot\mu(\frac{D}{g})(\frac{D}{g})^2\end{align*}$

令$\begin{align*}w(D)=\sum_{g|D}\mu(g)^2g\cdot\mu(\frac{D}{g})(\frac{D}{g})^2\end{align*}$

现在,如果能够求出w(D),那么每个询问就可以在$O(\sqrt N)$里完成。

由于$y=\mu(x),y=x$是积性函数,那么由狄利克雷乘积的性质可知,

w(D)也是一个积性函数,所以线筛就可以求出w(D)。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 4000050
using namespace std;
const int mod=1<<30;
int w[MAXN];
void Sieve(){
static bool np[MAXN];
static int prime[MAXN],pnt;
w[1]=1;
for(int i=2,tmp,d;i<=4000000;i++){
if(!np[i]) prime[++pnt]=i,w[i]=(1ll*i-1ll*i*i%mod+mod)%mod;
for(int j=1;j<=pnt&&i<=4000000/prime[j];j++){
np[i*prime[j]]=1; tmp=i; d=prime[j];
while(tmp%prime[j]==0) tmp/=prime[j],d*=prime[j];
if(tmp!=1) w[tmp*d]=1ll*w[tmp]*w[d]%mod;
else if(1ll*d==1ll*prime[j]*prime[j]) w[d]=(-1ll*prime[j]*prime[j]%mod*prime[j]%mod+mod)%mod;
if(i%prime[j]==0) break;
}
}
for(int i=2;i<=4000000;i++) w[i]=(1ll*w[i]+w[i-1])%mod;
}
int sum(int n){
return 1ll*(1+n)*n/2%mod;
}
int main(){
Sieve();
int Case,n,m,mini,ans;
scanf("%d",&Case);
while(Case--){
scanf("%d%d",&n,&m);
mini=min(n,m); ans=0;
for(int D=1,last;D<=mini;D=last+1){
last=min(n/(n/D),m/(m/D));
ans=(1ll*ans+1ll*((w[last]-w[D-1]+mod)%mod)*sum(n/D)*sum(m/D))%mod;
}
printf("%d\n",ans);
} return 0;
}

  

●BZOJ 2694 Lcm的更多相关文章

  1. bzoj 2694: Lcm

    2694: Lcm Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 422  Solved: 220[Submit][Status][Discuss] ...

  2. [bzoj] 2694 Lcm || 莫比乌斯反演

    原题 定义整数a,b,求所有满足条件的lcm(a,b)的和: 1<=a<=A 1<=b<=B ∀n>1,n2†gcd(a,b)(即任意n>1,\(n^2\)不是gc ...

  3. 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)之和.答 ...

  4. BZOJ 2694: Lcm [莫比乌斯反演 线性筛]

    题意:求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m lcm(i,j)\ : gcd(i,j) 是sf 无平方因子数\) 无平方因子数?搞一个\(\mu(gcd( ...

  5. BZOJ 2694: Lcm 莫比乌斯反演 + 积性函数 + 线性筛 + 卡常

    求 $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)\mu(gcd(i,j))^2$   $\Rightarrow \sum_{d=1}^{n}\mu(d)^2\sum_{i ...

  6. 【BZOJ】【2694】Lcm

    数论/莫比乌斯反演/线性筛 题解:http://www.cnblogs.com/zyfzyf/p/4218176.html JZPTAB的加强版?感觉线性筛好像还是不怎么会啊……sad 题目记下来,回 ...

  7. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  8. bzoj 2154 莫比乌斯反演求lcm的和

    题目大意: 表格中每一个位置(i,j)填的值是lcm(i,j) , 求n*m的表格值有多大 论文贾志鹏线性筛中过程讲的很好 最后的逆元我利用的是欧拉定理求解的 我这个最后线性扫了一遍,勉强过了,效率不 ...

  9. 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)

    BZOJ 2154 crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b ...

随机推荐

  1. Beta Scrum

    听说 Beta Scrum Day 1

  2. 第十四周实验报告:实验四 Android程序设计

    20162317袁逸灏 第十四周实验报告:实验四 Android程序设计 实验内容 Android Studio 实验要求 学会使用Android Studio 学习 活动 以及相关知识内容 学习 U ...

  3. 201621123062《java程序设计》第四周作业总结

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 关键词:重载.继承.多态.static.final.抽象类 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要 ...

  4. Week02-Java基本语法与类库

    1. 本周学习总结 本周主要学习了包装类,明白了包装类比基本数据类型的优点(见书面作业4.2),了解了自动装箱,自动拆箱的概念和区别(见书面作业4.1),知道了java中的引用类似C语言中的指针,明白 ...

  5. SaaS的那些事儿

    前两年...   大一大二期间,不知道软件架构.云服务器.数据库为何物,偶尔听过却从未用过.天天学的写的东西都是一些命令行代码,所幸在学完<数据结构>和<算法导论>后能够独立实 ...

  6. eclipse下maven一些配置方法汇总

    随着eclipse的不同版本的变更:对maven插件的安装也有着不同的差异:之前也在一些版本的eclipse上安装成功地,但是最近又遇到了一些麻烦,故将这些方法记录下来: 大家都知道的最常用的一种方式 ...

  7. 《高级软件测试》JIRA使用手册(一)JIRA基本情况

    JIRA 官方网站为:https://www.atlassian.com/software/jira 中文代理网站为:https://www.jira.cn 现版本:v7.3.0 Atlassian公 ...

  8. HTML,文字两端对齐

    text-align: justify样式的意思是文字两端对齐,但是有时候你会发现这东西不起左右,比如在div标签中的文字. 解决方法:在div中放一个空的span标签,并使用下面的样式. .just ...

  9. 利用Node的chokidar 监听文件改变的文件。

    最近维护一个项目.每次改完东西,都要上传到服务器.然后有时候就忘记一些东西,于是就想有没有可以方法能监听文件的改变.然后我再利用程序把更改的文件一键上传到服务器. 于是就找到了nodejs 的chok ...

  10. centos7 安装docker

    1.首先cent7 基本是在vm上完全安装'. 2.参考官方网站安装 1.https://wiki.centos.org/AdditionalResources/Repositories OS req ...