http://www.lydsy.com/JudgeOnline/problem.php?id=2154 (题目链接)

题意

  给出${n,m}$,求$${\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)}$$

Solution

  莫比乌斯反演,推啊推式子。

\begin{aligned}  \sum_{i=1}^n\sum_{j=1}^mlcm(i,j)=&\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}  \\  =&\sum_{g=1}^{min(n,m)}\sum_{i=1}^{\lfloor{n/g}\rfloor}\sum_{j=1}^{\lfloor{m/g}\rfloor}\frac{ijg^2}{g}[gcd(i,j)=1]  \\  =&\sum_{g=1}^{min(n,m)}g\sum_{i=1}^{\lfloor{n/g}\rfloor}\sum_{j=1}^{\lfloor{m/g}\rfloor}ij\sum_{t|i,t|j}μ(t)  \\  =&\sum_{g=1}^{min(n,m)}g\sum_{t=1}^{min(\lfloor{n/g}\rfloor,\lfloor{m/g}\rfloor)}μ(t)\sum_{i=1}^{\lfloor{n/(gt)}\rfloor}\sum_{j=1}^{\lfloor{m/(gt)}\rfloor}ijt^2   \end{aligned}

  此时,我们用${S(n)}$表示${\sum_{i=1}^ni}$。

\begin{aligned}  \sum_{g=1}^{min(n,m)}g\sum_{t=1}^{min(\lfloor{n/g}\rfloor,\lfloor{m/g}\rfloor)}μ(t)t^2S(\lfloor\frac{n}{gt}\rfloor)S(\lfloor\frac{m}{gt}\rfloor)   \end{aligned}

  令${Q=gt}$。

\begin{aligned}  \sum_{Q=1}^{min(n,m)}S(\lfloor\frac{n}{Q}\rfloor)S(\lfloor\frac{m}{Q}\rfloor)Q\sum_{t|Q}tμ(t)   \end{aligned}

  我们发现,${g(Q)=\sum_{t|Q}tμ(t)}$是个积性函数,为什么呢。首先有公式${f(t)=tμ(t)}$是积性的,那么我们构造另外一个积性函数${p(t)=1}$,将${f}$和${p}$狄利克雷卷积,就得到了${g}$,所以${g}$是个积性函数,可以用线性筛在${O(n)}$的时间内算出来,所以最后复杂度就是${O(n)}$的。

细节

  最后输出答案的时候加模再取模

代码

// bzoj2154
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#define LL long long
#define inf 2147483647
#define MOD 20101009
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=10000010;
LL f[maxn],S[maxn];
int p[maxn],vis[maxn],n,m; int main() {
scanf("%d%d",&n,&m);
if (n>m) swap(n,m);
S[1]=f[1]=1;
for (int i=2;i<=m;i++) {
if (!vis[i]) p[++p[0]]=i,f[i]=1-i;
for (int j=1;j<=p[0] && p[j]*i<=m;j++) {
vis[i*p[j]]=1;
if (i%p[j]==0) {f[i*p[j]]=f[i];break;}
else f[i*p[j]]=f[i]*f[p[j]]%MOD;
}
S[i]=(S[i-1]+i)%MOD;
}
LL ans=0;
for (LL i=1;i<=n;i++)
ans=(ans+S[n/i]*S[m/i]%MOD*i%MOD*f[i]%MOD)%MOD;
printf("%lld\n",(ans+MOD)%MOD);
return 0;
}

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

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

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

  2. BZOJ2154: Crash的数字表格 & BZOJ2693: jzptab

    [传送门:BZOJ2154&BZOJ2693] 简要题意: 给出n,m,求$\sum_{i=1}^{n}\sum_{j=1}^{m}LCM(i,j)$ 题解: 莫比乌斯反演(因为BZOJ269 ...

  3. Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)

    题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...

  4. BZOJ2154: Crash的数字表格

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2154 题意&&题解:http://www.cnblogs.com/jiangl ...

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

    Description 求sigma lcm(x,y),x<=n,y<=m.n,m<=1e7. Solution lcm没有什么直接做的好方法,用lcm=x*y/gcd转成gcd来做 ...

  6. bzoj千题计划253:bzoj2154: Crash的数字表格

    http://www.lydsy.com/JudgeOnline/problem.php?id=2154 #include<cstdio> #include<algorithm> ...

  7. bzoj2154: Crash的数字表格 莫比乌斯反演

    题意:求\(\sum_{i=1}^n \sum_{j=1}^m\frac{i*j}{gcd(i,j)}\) 题解:\(ans=\sum_{i=1}^n\sum_{j=1}^m \frac{i*j}{g ...

  8. [bzoj2154]Crash的数字表格(mobius反演)

    题意:$\sum\limits_{i = 1}^n {\sum\limits_{j = 1}^m {lcm(i,j)} } $ 解题关键: $\sum\limits_{i = 1}^n {\sum\l ...

  9. 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab

    t<=1e4个询问每次问n,m<=1e7,$\sum_{1\leqslant x \leqslant n,1 \leqslant y\leqslant m}lcm(x,y)$. 首先题目要 ...

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

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

随机推荐

  1. Flink HA

    standalone 模式的高可用 部署 flink 使用zookeeper协调多个运行的jobmanager,所以要启用flink HA 你需要把高可用模式设置成zookeeper,配置zookee ...

  2. Erlang运行时中的无锁队列及其在异步线程中的应用

    本文首先介绍 Erlang 运行时中需要使用无锁队列的场合,然后介绍无锁队列的基本原理及会遇到的问题,接下来介绍 Erlang 运行时中如何通过“线程进度”机制解决无锁队列的问题,并介绍 Erlang ...

  3. printf命令详解

    基础命令学习目录首页 本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中 ...

  4. Django_rest_framework_基础

    简介 为什么要使用REST framework? Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. - 在线可视的API,对于赢得你的开发者们十分有用  ...

  5. Hive问题

    今天一直遇到一个问题: 在查询最热10个关键词时候总是报错,下图为报错最下面 一直关注着failed的内容,头疼了一天.........  结果实验室老哥给指出问题,是yarnException报错, ...

  6. Task 1 四则运算

    第一节课作业 1.设计思想:随机产生30道题目,主体是一个for循环,在循环体中加上相应的内容,包括随机数函数得到两个运算数值以及运算符号,再利用switch,case结构输出相应的题目即可. 2.源 ...

  7. Java程序设计实践

    先放上需求同时也是作业的地址:http://www.cnblogs.com/xinz/p/7417960.html 这是我第一次接触一个完整的项目的开发,在这里分享一下整个项目(或者作业?)的设计过程 ...

  8. vue 实战语法错误导致的问题记录

    1. 在组件中引入mapActions import mapActions  from 'vuex'   而不是  getActions 2.引入 mutations-type.js import   ...

  9. Spring 计划 7.0

    Sprint回顾 让我们一次比一次做得更好.   1.回顾组织 主题:“我们怎样才能在下个sprint中做的更好?” 时间:设定为1小时. 参与者:整个团队. 场所:宿舍. 秘书:李新佳.    2. ...

  10. svm小问题

    1.没有报错但是结果是pedicttestlabel = [] accuracy = [] 举例:(前提是装了工具箱libsvm-3.21) data=[178,80;172,75;160,50;15 ...