[国家集训队]Crash的数字表格
Description:
求$ \sum_{i=1}^n \sum_{j=1}^m lcm(i,j) $
Hint:
$ n,m<=10^7 $
Solution:
这题有每次询问 \(O(n)\) 做法,然而原题是多组询问,所以还是好好推 \(O(\sqrt[]{n})\) 做法
首先:
\(Ans=\sum_{d=1}^{n}d * \sum_{i=1}^n \sum_{j=1}^m i * j * [gcd(i,j)==1] \)
$Ans=\sum_{d=1}^{n}d * \sum_{k=1}^{\lfloor \frac{n}{d} \rfloor} \mu(k) * k^2 \sum_{i=1}^{\lfloor \frac{n}{kd} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{kd} \rfloor } i * j $
换元得:
\(Ans=\sum_{T=1}^{n} \sum_{i=1}^{\lfloor \frac{n}{T} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{T} \rfloor } i * j * \sum_{k|T} \mu(k) * k^2 * d \)
$Ans=\sum_{T=1}^{n} \sum_{i=1}^{\lfloor \frac{n}{T} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{T} \rfloor } i * j * (T * \sum_{k|T} \mu(k) * k) $
易知 \(g(T)=\sum_{k|T} \mu(k) * k\) 为积性函数
前面的$ \sum_{i=1}^{\lfloor \frac{n}{T} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{T} \rfloor }i * j$ 就是两个等差数列相乘
后面的线性筛处理出\(T*g(T)\)的前缀和即可
#include<bits/stdc++.h>
using namespace std;
const int mxn=1e7+5,mod=20101009;
int n,m,tot;
int p[mxn],vis[mxn];
long long g[mxn],f[mxn];
void sieve(int lim)
{
g[1]=1;
for(int i=2;i<=lim;++i) {
if(!vis[i]) g[i]=1-i,p[++tot]=i;
for(int j=1;j<=tot&&p[j]*i<=lim;++j) {
vis[p[j]*i]=1;
if(i%p[j]) g[p[j]*i]=g[i]*g[p[j]]%mod;
else {g[p[j]*i]=g[i];break; }
}
}
for(int i=1;i<=lim;++i)
f[i]=(f[i-1]+g[i]*i%mod)%mod;
}
int main()
{
scanf("%d%d",&n,&m); int ans=0;
sieve(10000000); if(n>m) swap(n,m);
for(int l=1,r;l<=n;l=r+1) {
r=min(n/(n/l),m/(m/l)); int x=n/l,y=m/l;
ans=(ans+1ll*(1ll*x*(x+1)/2%mod)*(1ll*y*(y+1)/2%mod)%mod*((f[r]-f[l-1]+mod)%mod)%mod)%mod;
}
printf("%d\n",(ans+mod)%mod);
return 0;
}
[国家集训队]Crash的数字表格的更多相关文章
- 洛谷 P1829 [国家集训队]Crash的数字表格 / JZPTAB 解题报告
[国家集训队]Crash的数字表格 / JZPTAB 题意 求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^mlcm(i,j)\),\(n,m\le 10^7\) 鉴于 ...
- [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)
题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...
- 题解-[国家集训队]Crash的数字表格 / JZPTAB
题解-[国家集训队]Crash的数字表格 / JZPTAB 前置知识: 莫比乌斯反演 </> [国家集训队]Crash的数字表格 / JZPTAB 单组测试数据,给定 \(n,m\) ,求 ...
- P1829 [国家集训队]Crash的数字表格
P1829 [国家集训队]Crash的数字表格 原题传送门 前置芝士 莫比乌斯反演 乘法逆元 数论分块 正文 //补充:以下式子中的除法均为整除 由题目可以得知,这道题让我们所求的数,用一个式子来表达 ...
- 洛谷P1829 [国家集训队]Crash的数字表格
题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时整除a和b的最小正整数.例如,LCM(6, ...
- [luogu1829][bzoj2154][国家集训队]Crash的数字表格 / JZPTAB【莫比乌斯反演】
传送门:洛谷,bzoj 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时整除a和b的最小正整 ...
- 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)
题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a ...
- 【题解】[国家集训队]Crash的数字表格 / JZPTAB
求解\(\sum_{i = 1}^{n}\sum_{j = 1}^{m}lcm\left ( i,j \right )\). 有\(lcm\left ( i,j \right )=\frac{ij}{ ...
- P1829 [国家集训队]Crash的数字表格 / JZPTAB
推式子太快乐啦!虽然我好蠢而且dummy和maomao好巨(划掉) 思路 莫比乌斯反演的题目 首先这题有\(O(\sqrt n)\)的做法但是我没写咕咕咕 然后就是爆推一波式子 \[ \sum_{i= ...
随机推荐
- How to Repair GRUB2 When Ubuntu Won’t Boot
Ubuntu and many other Linux distributions use the GRUB2 boot loader. If GRUB2 breaks—for example, if ...
- linux服务器last查看关机记录
1.查看重启记录 last reboot命令 [root@test ~]# last reboot reboot system boot -.el6.x Mon May : - : (+:) rebo ...
- HTML学习笔记07-头部
HTML <head> 元素 <head> 元素包含了所有的头部标签元素.在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种met ...
- XmlDocument根据节点的属性值获取节点
string targetParm = string.Format("STUDENTS/STUDENT[@NO='{0}']", targetValue);//生成目标获取节点的参 ...
- zabbix系列(六)zabbix添加对ubuntu系统的监控
在ubuntu os上安装agent,使用如下命令: wget http://mirrors.aliyun.com/zabbix/zabbix/3.0/ubuntu/pool/main/z/zabbi ...
- java.lang.NoClassDefFoundError: com/google/inject/Injector
报错如下: 解决方案: <dependency> <groupId>com.google.inject</groupId> <artifactId>gu ...
- IDEA运行TestNG报错rg.testng.TestNGException: org.xml.sax.SAXParseException;
从eclipse复制的依赖注解,一运行测试脚本发现报错如下: "F:\Program Files\Java\jdk1.7.0_17\bin\java" -ea -Didea.lau ...
- VM 安装 linux Enterprise_R5_U4_Server_I386_DVD教程图解
ocp 学习笔记 20161126--------linux 笔记整理 一:安装linux系统环境: 1:linux 系统安装包下载路径:链接:链接: https://pan.baidu.com/s/ ...
- php高级工程师面试题,行不行对照看下自己的实力
在网上看到一些高级php 的面试题目.. 最近接连面试了几家公司,有些重要问题记录一下,督促自己学习提高,同时希望给朋友们一些帮助.内容很多,一点点完善,一步步学习..有些是面试被问,有些是招聘要求, ...
- js----DOM对象(事件)
节点操作: 创建节点:var ele_a = document.createElement('a'); 添加节点:ele_parent.appendChild(ele_img); 删除节点:ele_p ...