Crash的数字表格

Description

今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple)。对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数。例如,LCM(6, 8) = 24。回到家后,Crash还在想着课上学的东西,为了研究最小公倍数,他画了一张NM的表格。每个格子里写了一个数字,其中第i行第j列的那个格子里写着数为LCM(i, j)。一个4 5的表格如下: 1 2 3 4 5 2 2 6 4 10 3 6 3 12 15 4 4 12 4 20 看着这个表格,Crash想到了很多可以思考的问题。不过他最想解决的问题却是一个十分简单的问题:这个表格中所有数的和是多少。当N和M很大时,Crash就束手无策了,因此他找到了聪明的你用程序帮他解决这个问题。由于最终结果可能会很大,Crash只想知道表格里所有数的和mod 20101009的值。

Input

输入的第一行包含两个正整数,分别表示 \(N\) 和 \(M\)。

Output

输出一个正整数,表示表格中所有数的和\(mod \ 20101009\)的值。

Sample Input

\(4 \ 5\)

Sample Output

\(122\)

【数据规模和约定】

100%的数据满足\(N, M ≤ 10^7\)。

由题可得:我们应该求的是 \(\sum_{i =1} ^ n\ \sum_{j=1}^m\ lcm(i,j)\) (不妨设 \(n<=m\))

先可以由原式化简:

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

\(ans = \sum_{d=1}^n\ \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\ \sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\ [gcd(i,j)=1]\ ijd\)

经过最开始的基本化简以后,既然这道题和 \(gcd\) 有许许多多不可描述的关系,我们可以考虑莫比乌斯反演。
既然要用莫比乌斯反演,我们就应该来构造相应的 \(f(x)\) 和 \(F(x)\)

我们设 \(f(x, y, k)\) 表示 \(\sum_{i=1}^x\ \sum_{j=1}^y\ [gcd[i,j]=k]\ ij\)

再设 \(F(x,y,t)\) 表示 \(\sum_{i=1}^x\ \sum_{j=1}^y\ [t\mid gcd(i,j)]ij\)

\(\therefore \ ans=\sum_{d=1}^n\ d\ f(\lfloor\frac{n}{d}\rfloor,\lfloor\frac{m}{d}\rfloor,1)\)

现在,我们来仔细观察一下 \(F(x,y,t)\) 和 \(f(x,y,k)\) 两个函数的关系

\(F(x,y,t)=\sum_{t\mid d}\ f(x,y,d)\)

由莫比乌斯反演后可得:

\(f(x,y,d)=\sum_{d\mid t}\ \mu(\frac{t}{d})\ F(x,y,t)\)

\(\because\ d=1\)

\(\therefore\ f(x,y,1)=\sum_{t=1}^x\ \mu(t)\ F(x,y,t)\)

现在,我们回过头了思考一下我们上面一系列操作的意义:
我们由题目要求推得我们需要求 \(f(x,y,1)\)
但是我们发现直接求并不好求,所以我们反演以后转化为去求 \(F(x,y,t)\) 再进一步求得 \(ans\)
既然我们转化为 \(F(x,y,t)\) ,那么这个函数应该要比较方面我们求值才可以达到我们的要求
所以我们来考虑一下 \(F(x,y,t)\) 这个函数
仔细思考后可以发现:

\(F(x,y,t)=\sum_{d=1}^x\ d^2\ (\sum_{a=1}^{\lfloor\frac{x}{d}\rfloor}\ a\ \sum_{b=1}^{\lfloor\frac{y}{d}\rfloor}\ b)\)

设 \(sum(x,y)=\sum_{a=1}^x\ \sum_{b=1}^y\ ab\)
显然可以用高斯求和 \(O(1)\) 求得

\(\therefore \ F(x,y,t)=\sum_{d=1}^x\ d^2\ sum(\lfloor\frac{x}{d}\rfloor,\lfloor\frac{y}{d}\rfloor)\)

那么整个分析过程就差不多完成了,综上所述:

\(ans=\sum_{d=1}^n\ d\ f(\lfloor\frac{n}{d}\rfloor,\lfloor\frac{m}{d}\rfloor,1)\)
我们可以分块处理 \(f\) ,此处可以分块 复杂度\(O(\sqrt{n})\)

\(f(x,y,1)=\sum_{t=1}^x\ \mu(t)\ F(x,y,t)=\sum_{t=1}^x\ \mu(t)\ t^2\ sum(\lfloor\frac{x}{t}\rfloor,\lfloor\frac{y}{t}\rfloor)\)
我们可以 \(O(1)\) 预处理 \(\mu(t)\ t^2\),计算 \(sum\)

所以总复杂度 \(O(n\sqrt{n})\)

Crash的数字表格(莫比乌斯反演)的更多相关文章

  1. [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块)

    [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块) 题面 求 \[\sum_{i=1}^{n} \sum_{j=1}^{m} \mathrm{lcm}(i,j)\] 分析 \[\su ...

  2. BZOJ 2154: Crash的数字表格 [莫比乌斯反演]

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2924  Solved: 1091[Submit][Status][ ...

  3. [bzoj 2693] jzptab & [bzoj 2154] Crash的数字表格 (莫比乌斯反演)

    题目描述 TTT组数据,给出NNN,MMM,求∑x=1N∑y=1Mlim(x,y)\sum_{x=1}^N\sum_{y=1}^M lim(x,y)\newlinex=1∑N​y=1∑M​lim(x, ...

  4. 【bzoj2154】Crash的数字表格 莫比乌斯反演

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

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

    [题意]给定n,m,求Σlcm(i,j),1<=i<=n,1<=j<=m,n,m<=10^7. [算法]数论(莫比乌斯反演) [题解] $$ans=\sum_{i\leq ...

  6. BZOJ 2154 Crash的数字表格 ——莫比乌斯反演

    求$\sum_{i=1}^n\sum_{j=1}^n lcm(i,j)$ 枚举因数 $ans=\sum_{d<=n} F(d) * d$ $F(d)$表示给定范围内两两$\sum_{gcd(i, ...

  7. [国家集训队] Crash的数字表格 - 莫比乌斯反演,整除分块

    考虑到\(lcm(i,j)=\frac{ij}{gcd(i,j)}\) \(\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\) \(\sum_{d=1}^{n} ...

  8. 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 ...

  9. 洛谷 - P1829 - Crash的数字表格 - 莫比乌斯反演

    求: \(S(n,m)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}lcm(i,j)\) 显然: \(S(n,m)=\sum\limits_{i=1}^{n}\ ...

  10. 【BZOJ4816】【SDOI2017】数字表格 [莫比乌斯反演]

    数字表格 Time Limit: 50 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Doris刚刚学习了fibonac ...

随机推荐

  1. lsattr 查看文件扩展属性

    1. 命令功能 lsattr查看 是否有chattr设置的权限. 2. 使用范例 [root@localhost data]# lsattr resolv.conf -----a-------e- r ...

  2. QT生成可执行的EXE程序

    [转载] Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行.因此 Qt 官方开发环境里 ...

  3. Angular Viewchild undefined

    Angular的viewchild在使用的时候报错 undefined 1 检查是否在元素上打上标识 #xxx 2 查看引用元素时的时机 是否在AfterViewInit之后 3 检查元素是否在*ng ...

  4. BZOJ 1233 干草堆 (单调队列优化DP)

    $ BZOJ~1233~~ $ 干草堆: (题目特殊性质) $ solution: $ 很妙的一道题目,开始看了一眼觉得是个傻逼贪心,从后往前当前层能多短就多短,尽量节省花费.但是这是DP专题,怎么会 ...

  5. php io

    1.获取目录下文件,不包括子目录 //获取某目录下所有文件.目录名(不包括子目录下文件.目录名) $handler = opendir($dir); while (($filename = readd ...

  6. [BZOJ1826] 缓存交换

    问题描述 在计算机中,CPU只能和高速缓存Cache直接交换数据.当所需的内存单元不在Cache中时,则需要从主存里把数据调入Cache.此时,如果Cache容量已满,则必须先从中删除一个. 例如,当 ...

  7. 预览下载的pdf的——pdf.js

    1.需要到官网下载源码:https://mozilla.github.io/pdf.js/ 2. function(){ let url='./demo1.pdf'; window.location. ...

  8. python实现Restful服务 (基于flask)(1)

    参考:https://www.jianshu.com/p/6ac1cab17929 参考:https://www.cnblogs.com/alexyuyu/p/6243362.html 参考:http ...

  9. ECS主动运维事件--让你HOLD住全场 (二)

    背景 数月前,我们推出了新的功能:ECS主动运维事件--让你HOLD住全场 https://yq.aliyun.com/articles/573782?spm=a2c4e.11155435.0.0.7 ...

  10. 做网站用php还是python

    单纯说做网站,显然是php更适合,php是专为web而生,而Python只是可以做web.php也比python更简单,更容易学,对于新手更友好. 从权威技术网站w3techs.com2017年7月2 ...