[国家集训队]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= ...
随机推荐
- CrossUI SPA Builder ---- feathers API框架
CrossUI SPA Builder: http://www.crossui.com/ 国产? 龙博(JSLINB)AJAX框架? CrossUI SPA Builderenables de ...
- mac安装pyspider报错
(env)$ pip3 uninstall pycurl (env)$ pip3 install --upgrade pip (env)$ export LDFLAGS=-L/usr/local/op ...
- phantomjs 截取twitter的网页(动态生成的页面)
// This example shows how to render pages that perform AJAX calls// upon page load.//// Instead of w ...
- Oracle 正则表达式函数-REGEXP_REPLACE
背景 当初写oracle的一个存储过程,以前不知道sql里也有正则表达式,关于正则表达式教程很多了,这里只是记录下Oracle也有这个功能,下次再有类似需求用这个处理的确方便很多. 想起存储过程,就想 ...
- sqlserver2008r2数据库关联孤立账号的方法
重新安装mssql数据库后可能有这样的问题, 在数据还原到其他服务器时,登录名会丢失,重建非常麻烦 特別是数据库用户较多的的情况,其实这个问题解决非常简单, sql serve ...
- Linux中 Lua 访问Sql Server的配置方法
一.背景说明: 通过lua脚本实现对SQL Server数据库的操作. 二.具体设定: 安装流程图:如果是使用Lua连接SQL Server,从上到下则需要安装lua -> luaSQL-ODB ...
- Expm 3_2 寻找最邻近的点对
[问题描述] 设p1=(x1,y1), p2=(x2,y2), … , pn=(xn,yn) 是平面上n个点构成的集合S,设计和实现找出集合S中距离最近点对的算法. 每一个格子最多只能存在一个点, ...
- js几种创建对象的方式
javascript是一种“基于prototype的面向对象语言“,与java有非常大的区别,无法通过类来创建对象.那么,既然是面象对象的,如何来创建对象呢? 一.通过”字面量“方式创建. 方法:将成 ...
- echarts饼图不显示数据为0的数据
首先阐述下为什么会有这个需求,这个和echarts自身的显示效果有关. 如果你选择的展示图形为饼图,然后你的数据里有一条数据为0,那么展示的数据就为一条直线,看上去效果并不好, 会很突兀. 当然如果你 ...
- Java char
Java char字符判断和操作方法类似C的ctype库 //: object/Shifting.java package object; import static net.util.Print. ...