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. 2017ICPC南宁M The Maximum Unreachable Node Set (偏序集最长反链)

    题意:给你一张DAG,让你选取最多的点,使得这些点之间互相不可达. 思路:此问题和最小路径可重复点覆盖等价,先在原图上跑一边传递闭包,然后把每个点拆成两个点i, i + n, 原图中的边(a, b)变 ...

  2. uboot tag存储主要部分代码

    https://www.cnblogs.com/pokerface/p/5217106.html     cmd_bootm.c //传递给内核的参数      int do_bootm (cmd_t ...

  3. yum软件包管理

    一.yum常用命令 #yum -y install [软件包名] //安装 #yum erase [软件包名] //卸载 #yum clean all //清除缓存 #yum makecache // ...

  4. 一篇文章理解JS数据类型、深拷贝和浅拷贝

    前言 笔者最近整理了一些前端技术文章,如果有兴趣可以参考这里:muwoo blogs.接下来我们进入正片: js 数据类型 六种 基本数据类型: Boolean. 布尔值,true 和 false. ...

  5. Ajax工作原理及C/S与B/S的区别

    工作原理 Ajax 基本上就是把 JavaScript 技术和 XMLHttpRequest 对象放在 Web 表单和服务器之间.当用户填写表单时,数据发送给一些 JavaScript 代码而不是直接 ...

  6. SoupUI 结合loadrunner压力测试

    SoupUI 结合loadrunner压力测试 上一篇介绍了SoupUI接口测试,因为工作需要,需要在loadrunner进行websocket的压力测试,当然,SoupUI本身也是可以做性能测试的 ...

  7. [CF1056E]Check Transcription

    题目:Check Transcription 传送门:http://codeforces.com/contest/1056/problem/E 分析: 1)显然有个$O( \frac{t}{max(c ...

  8. [CSP-S模拟测试]:赛(贪心+三分)

    题目描述 由于出题人思维枯竭所以想不出好玩的背景.有$n$个物品,第$i$个物品的价格是$v_i$,有两个人,每个人都喜欢$n$个物品中的一些物品.要求选出正好$m$个物品,满足选出的物品中至少有$k ...

  9. JS求多个数组的重复数据

    今天朋友问了我这个问题:JS求多个数组的重复数据 注: 1.更准确的说是只要多个数组中有两个以上的重复数据,那么这个数据就是我需要的 2.单个数组内的数据不存在重复值(当然如果有的话,你可以去重) 3 ...

  10. xsxsxsxsxsxsxsxs

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...