Crash的数字表格

求\(\sum_{i=1}^N\sum_{j=1}^Mlcm(i,j),n,m\leq 10^7\)

设\(N<M\),显然有

\[\sum_{i=1}^N\sum_{j=1}^M\frac{ij}{gcd(i,j)}=\sum_{d=1}^N\frac{1}{d}\sum_{i=1}^N\sum_{j=1}^Mij(gcd(i,j)==d)
\]

\[f(k)=\sum_{i=1}^N\sum_{j=1}^Mij(gcd(i,j)==k)
\]

\[F(k)=\sum_{i=1}^{N}\sum_{j=1}^Mij(k|gcd(i,j))=k^2\sum_{i=1}^{[N/k]}\sum_{j=1}^{[M/k]}ij
\]

设\(dc[k]=\sum_{i=1}^ki=\frac{(1+k)\times k}{2},F(k)=k^2dc(N/k)dc(M/k)\)

由Mobius反演定理我们有

\[f(k)=\sum_{k|d}F(d)\mu(d/k)
\]

代入有

\[ans=\sum_{d=1}^N\frac{1}{d}\sum_{d|x}^{}x^2dc(N/x)dc(M/x)\mu(x/d)=
\]

\[\sum_{d=1}^Nd\sum_{x=1}^{[N/d]}dc(N/xd)dc(M/xd)x^2\mu(x)
\]

维护出后式\(x^2\mu(x)\),两次整除分块即可,不难得知时间复杂度\(O(n)\)。

顺便提一下,如果\(N,M\)很小,我们可以变成一下形式,变为\(O(nlogn+T\sqrt{n})\)(T为询问组数)。

\[\sum_{x=1}^Ndc(N/x)dc(M/x)\sum_{d|x}\mu(x/d)\frac{x^2}{d}
\]

参考代码:

#include <iostream>
#include <cstdio>
#define il inline
#define ri register
#define ll long long
#define yyb 20101009
#define swap(x,y) x^=y^=x^=y
using namespace std;
bool check[10000001];
int prime[750000],pt,mb[10000001];
void prepare(int);
il int min(int,int),dx(int,int);
int main(){
int n,m,nd,md,ndx,mdx,i,ij,j,
jj,ans1(0),ans2;
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);prepare(m);
for(i=1;i<=n;i=ij+1){
ij=min(n/(n/i),m/(m/i));
ans2&=0,nd=n/i,md=m/i;
for(j=1;j<=nd;j=jj+1)
jj=min(nd/(nd/j),md/(md/j)),
(ans2+=(ll)(mb[jj]-mb[j-1])*dx(1,nd/j)%yyb*dx(1,md/j)%yyb)%=yyb;
(ans1+=(ll)ans2*dx(i,ij)%yyb)%=yyb;
}printf("%d",(ans1+yyb)%yyb);
return 0;
}
il int dx(int a,int b){
return (ll)(a+b)*(b-a+1)/2%yyb;
}
void prepare(int n){
int i,j;check[1]|=mb[1]|=true;
for(i=2;i<=n;++i){
if(!check[i])prime[++pt]=i,mb[i]=-1;
for(j=1;j<=pt&&prime[j]<=n/i;++j){
check[i*prime[j]]|=true;
if(!(i%prime[j]))break;
mb[i*prime[j]]=-mb[i];
}
}for(i=1;i<=n;++i)mb[i]=((ll)mb[i]*i%yyb*i+mb[i-1])%yyb;
}
il int min(int a,int b){
return a<b?a:b;
}

Crash的数字表格的更多相关文章

  1. BZOJ 2154: Crash的数字表格 [莫比乌斯反演]

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2924  Solved: 1091[Submit][Status][ ...

  2. 【BZOJ】【2154】Crash的数字表格

    莫比乌斯反演 PoPoQQQ讲义第4题 题解:http://www.cnblogs.com/jianglangcaijin/archive/2013/11/27/3446169.html 感觉两次sq ...

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

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

  4. 【BZOJ 2154】Crash的数字表格 (莫比乌斯+分块)

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

  5. 【BZOJ2154】Crash的数字表格(莫比乌斯反演)

    [BZOJ2154]Crash的数字表格(莫比乌斯反演) 题面 BZOJ 简化题意: 给定\(n,m\) 求\[\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\] 题解 以下的一切都 ...

  6. BZOJ2154/BZOJ2693/Luogu1829 Crash的数字表格/JZPFAR 莫比乌斯反演

    传送门--Luogu 传送门--BZOJ2154 BZOJ2693是权限题 其中JZPFAR是多组询问,Crash的数字表格是单组询问 先推式子(默认\(N \leq M\),所有分数下取整) \(\ ...

  7. BZOJ2154 Crash的数字表格 【莫比乌斯反演】

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

  8. 2154: Crash的数字表格

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 3372  Solved: 1258[Submit][Status][ ...

  9. A1231. Crash的数字表格(贾志鹏)

    A1231. Crash的数字表格(贾志鹏) 时间限制:2.0s   内存限制:512.0MB   总提交次数:410   AC次数:154   平均分:63.93   将本题分享到:        ...

随机推荐

  1. 使用NPM在项目中引入【lodash】

    mkdir [文件名 ] 创建项目文件 mkdir lodashDemo cd [文件名] 进入项目文件 cd lodashDemo nvm -v 查看nvm版本,确定nvm已安装 nvm -v No ...

  2. 第1章WCF简介(WCF全面解析读书笔记2)

    第1章 WCF简介 面向服务架构(SOA)是近年来备受业界关注的一个主题,它代表了软件架构的一种方向.顺应SOA发展潮流,微软于2006年年底推出了一种新的分布式通信框架Windows Communi ...

  3. emulator: Trying to vcpu execute at eip:6d4053

  4. 架构之路:nginx与IIS服务器搭建集群实现负载均衡

    http://blog.csdn.net/zhanghan18333611647/article/details/50811980

  5. 修改字符集AL32UTF8修改为ZHS16GBK详解

    登陆sqlplus,在命令行输入 sqlplus sys/sys as sysdba;//登陆sqlplus SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP MOU ...

  6. SQLSERVER中常用的系统视图

    QLServer中提供了相当丰富的系统视图,能够从宏观到微观,从静态到动态反应数据库对象的存储结果.系统性能.系统等待事件等等.同时 也保留了与早期版本兼容性的视图,主要差别在于SQLServer20 ...

  7. mysql中查看表结构的sql语句

    mysql查看表结构命令,如下: desc 表名;show columns from 表名;describe 表名;show create table 表名; use information_sche ...

  8. Android Touch 事件总结

    ---恢复内容开始--- 1.Touch事件传递机制 过程有点儿类似于栈, ViewGroup的子类有都继承它的以下3个方法: public boolean dispatchTouchEvent(Mo ...

  9. ubuntu下学习linux

    ---恢复内容开始--- 查看当前正在运行的进程(ps命令, grep 搜索命令) ps -ef # -e 显示所有进程,环境变量 -f 全格式 也可以用: ps -e -f # 显示所有关于java ...

  10. 特征工程 vs. 特征提取

    “特征工程”这个华丽的术语,它以尽可能容易地使模型达到良好性能的方式,来确保你的预测因子被编码到模型中.例如,如果你有一个日期字段作为一个预测因子,并且它在周末与平日的响应上有着很大的不同,那么以这种 ...