点此看题面

大致题意: 求\(\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\)。

推式子

不会莫比乌斯反演的可以先去看这篇博客:初学莫比乌斯反演

反演题显然就是推式子啊~~~

考虑\(lcm\)这个东西不好做,所以我们先把它化成\(gcd\):

\[\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}
\]

接下来就是按照套路枚举\(gcd\)了:

\[\sum_{d=1}^{min(n,m)}d\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}ij[gcd(i,j)=1]
\]

由于\([gcd(i,j)=1]\)这个式子不好直接搞,因此我们要进行转化。

想到\(e(n)=[n=1]\),所以这个式子就相当于\(e(gcd(i,j))\)。

而\(\mu*I=e\),所以:

\[e(gcd(i,j))=\sum_{p|gcd(i,j)}\mu(p)\cdot I(\frac{gcd(i,j)}p)=\sum_{p|gcd(i,j)}\mu(p)
\]

也就是说,原式即为:

\[\sum_{d=1}^{min(n,m)}d\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}ij\sum_{p|gcd(i,j)}\mu(p)
\]

然后我们改为枚\(p\),得到:

\[\sum_{d=1}^{min(n,m)}d\sum_{p=1}^{\lfloor\frac{min(n,m)}d\rfloor}\sum_{i=1}^{\lfloor\frac n{dp}\rfloor}\sum_{j=1}^{\lfloor\frac m{dp}\rfloor}ijp^2\mu(p)
\]

整理一下式子,调整一下顺序,得到:

\[\sum_{d=1}^{min(n,m)}d\sum_{p=1}^{\lfloor\frac{min(n,m)}d\rfloor}p^2\mu(p)\sum_{i=1}^{\lfloor\frac n{dp}\rfloor}i\sum_{j=1}^{\lfloor\frac m{dp}\rfloor}j
\]

设\(S(n)=\sum_{i=1}^ni=\frac{n(n+1)}2\),则可得原式等于:

\[\sum_{d=1}^{min(n,m)}d\sum_{p=1}^{\lfloor\frac{min(n,m)}d\rfloor}p^2\mu(p)S(\lfloor\frac n{dp}\rfloor)S(\lfloor\frac m{dp}\rfloor)
\]

那么我们预处理\(p^2\mu(p)\)的值,然后二维除法分块枚举\(d,p\),就可以得出答案了。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 10000000
#define X 20101009
#define min(x,y) ((x)<(y)?(x):(y))
using namespace std;
int n,m,t,f[N+5];
class LinearSiever//线性筛
{
private:
int Pt,mu[N+5],P[N+5];
public:
int F[N+5];
I void Sieve(CI S)
{
RI i,j;for(mu[1]=1,i=2;i<=S;++i)//筛mu
{
!P[i]&&(mu[P[++Pt]=i]=-1);
for(j=1;j<=Pt&&1LL*i*P[j]<=S;++j)
if(P[i*P[j]]=1,i%P[j]) mu[i*P[j]]=-mu[i];else break;
}
for(i=1;i<=S;++i) F[i]=(1LL*i*i%X*(mu[i]+X)+F[i-1])%X;//预处理p^2mu(p)
}
}L;
I int S(CI x) {return (1LL*x*(x+1)>>1)%X;}//计算从1到x的和
int main()
{
RI l,r,ll,rr,res,ans=0;scanf("%d%d",&n,&m),L.Sieve(t=min(n,m));
for(l=1;l<=t;l=r+1)//第一维除法分块
{
res=0,r=min(n/(n/l),m/(m/l));
for(ll=1;ll<=t/l;ll=rr+1) rr=min((n/l)/(n/l/ll),(m/l)/(m/l/ll)),//第二维除法分块
res=(1LL*(L.F[rr]-L.F[ll-1]+X)%X*S(n/l/ll)%X*S(m/l/ll)+res)%X;
ans=(1LL*(S(r)-S(l-1)+X)%X*res+ans)%X;//统计答案
}return printf("%d",ans),0;//输出答案
}

【洛谷1829】 [国家集训队] Crash的数字表格(重拾莫比乌斯反演)的更多相关文章

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

    传送门 式子好麻烦orz……大佬好腻害orz->这里 //minamoto #include<iostream> #include<cstdio> #define ll ...

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

    题意:求$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$. 开始开心(自闭)化简: $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$ =$\su ...

  3. 洛谷 P1829 [国家集训队]Crash的数字表格 / JZPTAB 解题报告

    [国家集训队]Crash的数字表格 / JZPTAB 题意 求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^mlcm(i,j)\),\(n,m\le 10^7\) 鉴于 ...

  4. [luogu1829][bzoj2154][国家集训队]Crash的数字表格 / JZPTAB【莫比乌斯反演】

    传送门:洛谷,bzoj 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时整除a和b的最小正整 ...

  5. 洛谷P1829 [国家集训队]Crash的数字表格

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

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

    题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a ...

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

    题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...

  8. 题解-[国家集训队]Crash的数字表格 / JZPTAB

    题解-[国家集训队]Crash的数字表格 / JZPTAB 前置知识: 莫比乌斯反演 </> [国家集训队]Crash的数字表格 / JZPTAB 单组测试数据,给定 \(n,m\) ,求 ...

  9. P1829 [国家集训队]Crash的数字表格

    P1829 [国家集训队]Crash的数字表格 原题传送门 前置芝士 莫比乌斯反演 乘法逆元 数论分块 正文 //补充:以下式子中的除法均为整除 由题目可以得知,这道题让我们所求的数,用一个式子来表达 ...

随机推荐

  1. IEEE 二进制浮点数的表示

    朋友在谈一个物流相关的项目,是以前项目的一个延续,涉及到后台的扩展,手机端的App,外加两个App的对接的蓝牙打印机.这个项目前后说了一个多月了吧,最近才草拟了协议.项目本来不复杂,但是客户却如此的拖 ...

  2. 修改Hexo自动生成的HTML文件名

    导读 我们在使用Hexo框架生成静态博客时,其实是将你写好的.md文件输出成HTML文件进行渲染,其中HTML的文件名称就是.md的文件名称. 而我们为了编辑文章方便,为了通过文件名就知道这是哪篇文章 ...

  3. 【机器学习笔记】Python机器学习基本语法

    本来算法没有那么复杂,但如果因为语法而攻不下就很耽误时间.于是就整理一下,搞python机器学习上都需要些什么基本语法,够用就行,可能会持续更新. Python四大类型 元组tuple,目前还没有感受 ...

  4. RSA应用指数与模生成公钥(ArcGIS Server)

    参考: https://www.cnblogs.com/luo30zhao/p/10515594.html https://blog.csdn.net/skiof007/article/details ...

  5. ASP.NET MVC 中枚举生成下拉框

    最近公司在开发财务系统,在工作中遇到不少的地方需要下拉框. 但是枚举框中数据的内容又来自枚举. 枚举代码如下: public class EnumDemo { public enum Value { ...

  6. C# 分布式自增ID算法snowflake(雪花算法)

    概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的.有些时候我们希望能使用一种简 ...

  7. 遍历倒排索引核心类:SegmentTermDocs/SegmentTermPositions

    查询有哪些文档包含某个词元是Lucene搜索非常基础的一个功能,上层的搜索功能和索引功能都要基于这个功能来搭建.SegmentTermDocs就是查询词元所属文档的核心类,SegmentTermPos ...

  8. C# 获取社会统一信用代码

    时间不多,废话少说: 网络请求代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...

  9. MQTT实战2 - 使用MQTTnet实现mqtt通信

    MQTT实战1 - 使用Apache Apollo代理服务器实现mqtt通信 MQTT实战2 - 使用MQTTnet实现mqtt通信 源码下载 -> 提取码  QQ:505645074 MQTT ...

  10. [PHP] 三种运行模式 ISAPI模式 APACHE2HANDLER模式 CGI模式 FastCGI模式

    ISAPI模式:ISAPI是微软提供的一套标准,PHP的ISAPI模式意思是PHP在windows系统上的IIS进行配合的运行模式,在PHP5.3之后不再支持,php5isapi.dll文件,PHP进 ...