Crash的数字表格

求\(\sum_{i=1}^N\sum_{j=1}^Mlcm(i,j)\)

设\(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;
}

转载于:https://www.cnblogs.com/a1b3c7d9/p/10793938.html

Crash的数字表格相关推荐

  1. BZOJ 2154 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演,经典好题)(Luogu P1829)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P1829 [国家集训队]Crash的数字表格 / JZPTAB(反演,经典好题) Problem S ...

  2. bzoj2154 Crash的数字表格

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 4549  Solved: 1643 [Submit][Status ...

  3. bzoj2154: Crash的数字表格

    好神的莫比乌斯函数然后O(sqrt(n)*sqrt(n))好神的优化啊. #include<cstdio> #include<cstring> #include<ccty ...

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

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

  5. BZOJ 2154 Crash的数字表格 (莫比乌斯反演)

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

  6. P1829 [国家集训队]Crash的数字表格(推了好久的mobius反演)

    P1829 [国家集训队]Crash的数字表格 / JZPTAB 推导过程 ∑i=1n∑j=1mlcm(i,j)\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} lcm(i, j ...

  7. P1829 [国家集训队]Crash的数字表格 / JZPTAB

    P1829 [国家集训队]Crash的数字表格 / JZPTAB 题意: 求∑i=1n∑j=1mlcm(i,j)\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)∑i=1n​∑j ...

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

    Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MB [Submit][Status][Discuss] Description 今天的数学课上,Cr ...

  9. P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    [国家集训队]Crash的数字表格 / JZPTAB 题目描述 今天的数学课上,Crash 小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数 a a a 和 b b ...

最新文章

  1. 【NOIP2018】 游记
  2. 【opencv】(8) 傅里叶变换,高通低通滤波器
  3. Python 数据类型及其用法
  4. 离职10天,面挂4家公司!
  5. 一文搞定Vim/Vi编辑器
  6. Ant远程部署到Tomcat
  7. 对表头指针、表头结点,单链表删除的理解
  8. pythonocc 扩展数据_如何在pythonOCC中使用样条函数?
  9. 五、线程优先级和守护线程
  10. CMFCPropertyGridCtrl 的简单教程
  11. hadoop配置文件还原_hadoop通过Configuration对象自定义配置文件
  12. 在微信小程序中打造 MQTT 连接测试工具
  13. 对Laplace方程的学习——来自流沙公众号
  14. iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】
  15. package.json简介
  16. kafka报错Error while fetching metadata with correlation
  17. iPhone 13发布前迎来坏消息,摩托车会损坏手机相机?
  18. 取消耳机孔的 4 年后,苹果居然把耳机卖到了四千块
  19. Proximal Point Algorithm(PPA)
  20. 安装教程之Visual C++6.0的安装

热门文章

  1. pm1 android,今年的Android旗舰标配处理器,骁龙835的细节曝光
  2. 51单片机实现简单的洗衣机控制系统设计
  3. 一周IT歪评 | 中兴员工坠亡事件进展/19岁女孩电脑被植入偷窥软件/周鸿祎怒怼92年女生
  4. Zookeeper如何配置Observer角色
  5. python输入以回车结束_python将回车作为输入内容的实例
  6. 网络配置的四大基本要素: ip + netmask + gateway + dns
  7. JavaWeb开发介绍
  8. highChart表图大全之饼图圆环图详解
  9. 工控危险 施耐德PLC产品现高危漏洞
  10. Malmo——微软人工智能项目