1040 最大公约数之和

给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6

1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15

输入

1个数N(N <= 10^9)

输出

公约数之和

输入样例

6

输出样例

15

题解

\[\sum_{i=1}^n\gcd(i,n)=\sum_{d|n}d\varphi(n)
\]

暴力搞就行了。

1188 最大公约数之和 V2

给出一个数N,输出小于等于N的所有数,两两之间的最大公约数之和。

相当于计算这段程序(程序中的gcd(i,j)表示i与j的最大公约数):

G=0
for i=1 to N
for j=i+1 to N
G+=gcd(i,j)

输入

第1行:1个数T,表示后面用作输入测试的数的数量。(1 <= T <= 50000)

第2 - T + 1行:每行一个数N。(2 <= N <= 5000000)

输出

共T行,输出最大公约数之和。

输入样例

3

10

100

200000

输出样例

67

13015

143295493160

1237 最大公约数之和 V3

给出一个数N,输出小于等于N的所有数,两两之间的最大公约数之和。

相当于计算这段程序(程序中的gcd(i,j)表示i与j的最大公约数):

由于结果很大,输出Mod 1000000007的结果。

G=0
for i=1 to N
for j=1 to N
G = (G + gcd(i,j)) mod 1000000007;

输入

输入一个数N。(2 <= N <= 10^10)

输出

输出G Mod 1000000007的结果。

输入样例

100

输出样例

31080

可以看出来,T2,T3转化一下就只有数据范围不同。

题解

\[\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)\\
=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}[\gcd(i,j)=1]\\
=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}\sum_{d'|\gcd(i,j)}\mu(d)\\
=\sum_{d=1}^nd\sum_{d'=1}^{\lfloor\frac nd\rfloor}\mu(d')\lfloor\frac n{dd'}\rfloor^2
\]

整除分块两次,区别在于第二次。

  • V2可以直接线性筛求出\(\mu\)前缀和。
  • V3必须使用杜教筛,让\(\mu * I\)即可。

1363 最小公倍数之和

1.5 秒 131,072.0 KB 160 分 6 级题

给出一个n,求1-n这n个数,同n的最小公倍数的和。

例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66。

由于结果很大,输出Mod 1000000007的结果。

输入

第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 50000)

第2 - T + 1行:T个数A[i](A[i] <= 10^9)

输出

共T行,输出对应的最小公倍数之和

输入样例

3

5

6

9

输出样例

55

66

279


这题跟[SPOJ LCMsum](https://www.cnblogs.com/autoint/p/9892650.html)是一样的,只不过数据范围不一样,所以推到后面的操作不一样。
## [Star_Feel](https://www.cnblogs.com/Never-mind/p/9882196.html)的题解
原题相当于求$\sum_{i=1}^{n}\frac{i*n}{gcd(i,n)}$

先枚举\(d=\gcd(i,n)\),然后化简得到

\[n*\sum_{d|n}\sum_{i=1}^{\frac{n}{d}}i[\gcd(i,\frac{n}{d})=1]
\]

相当于求\(1\)到\(n-1\)中,与\(n\)互质的数和,设\(y<x\),如果\(\gcd(y,x)=1\),那么\(\gcd(x-y,x)=1\),两式的贡献就是\(x\)了

所以\(1\)到\(n-1\)中,与\(n\)互质的数和为\(\frac{\phi(n)*n}{2}\),特殊的,如果\(n=1,2\),则和为\(1\)

那么原式就等于

\[n*\sum_{d|n且d不为n}\frac{\frac{n}{d}*\phi(\frac{n}{d})}{2}+1
\]

再化简得到

\[n+\frac{n}{2}\sum_{d|n且d>1}d*phi(d)
\]

这样,这个式子就变成\(O(\sqrt{n})\),但是多组数据仍会超时

实际上我们将\(n\)质因数分解得到\(n=\prod_{i=1}^{x}p[i]^a[i]\)

因为\(p[i]\)两两互质,所以可以转化为

\[n+\prod_{i=1}^{x}\sum_{j=0}^{a[i]}\phi(p[i]^j)*p[i]^j
\]

根据欧拉函数的性质可以得到

\[n+\prod_{i=1}^{x}1+\sum_{j=1}^{a[i]}(p[i]-1)*p[i]^{2j-1}
\]

再根据等比数列求和公式得到

\[n+\prod_{i=1}^{x}1+(p[i]-1)*\frac{p[i]^{2*a[i]+1}-p[i]}{p[i]^2-1}\\
=n+\prod_{i=1}^{x}1+\frac{p[i]^{2*a[i]+1}-p[i]}{p[i]+1}
\]

然后线筛素数加速质因数分解就可以过了,记得最后处理\(1,2\)的情况

1190 最小公倍数之和 V2

给出2个数a, b,求LCM(a,b) + LCM(a+1,b) + .. + LCM(b,b)。

例如:a = 1, b = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66。

由于结果可能很大,输出Mod 10^9 + 7的结果。(测试数据为随机数据,没有构造特别坑人的Test)

输入

第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 50000)

第2 - T + 1行:每行2个数a, b,中间用空格分隔(1 <= a <= b <= 10^9)

输出

共T行,输出对应的最小公倍数之和Mod 10^9 + 7的结果。

输入样例

3

1 6

10 15

41 90

输出样例

66

675

139860

Cold_Chair的题解

\[ans = \sum_{i = a}^b \textrm{lcm}(i) \\
= b*\sum_{d | b} \sum_{i = \lfloor{ {a} \over {d}}\rfloor}^{\lceil{ {b} \over {d}}\rceil} i * [\gcd(i, { {b} \over {d}}) = 1] \\
= b*\sum_{d | b} \sum_{i = \lfloor{ {a} \over {d}}\rfloor}^{\lceil{ {b} \over {d}}\rceil} i * \sum_{d' | \gcd(i, { {b} \over {d}})} μ(d') \\
= b*\sum_{d | b} \sum_{d' | { {b} \over {d}}} μ(d') * d' * \sum_{i = \lfloor{ {b} \over {d }}\rfloor}^{\lceil{ {a} \over {d}}\rceil}i*[d' | i] \\
= b*\sum_{d | b} \sum_{d' | { {b} \over {d}}} μ(d') * d' * \sum_{i = \lfloor{ {b} \over {d*d' }}\rfloor}^{\lceil{ {a} \over {d * d'}}\rceil}i \\
= b*\sum_{d | b} \sum_{d' | { {b} \over {d}}} μ(d') * d' * (\lfloor{ {b} \over {d*d' }}\rfloor - \lceil{ {a} \over {d * d'}}\rceil + 1) * (\lfloor{ {b} \over {d*d' }}\rfloor + \lceil{ {a} \over {d * d'}}\rceil) / 2
\]

设$T = d * d’ $

\[= b*\sum_{T | b}(\lfloor{ {b} \over {T}}\rfloor - \lceil{ {a} \over {T}}\rceil + 1) * (\lfloor{ {b} \over {T}}\rfloor + \lceil{ {a} \over {T}}\rceil) / 2 * \sum_{d | T} μ(d) * d
\]

我们观察一下$\sum_{d | T} μ(d) * d \(
狄利克雷卷积做了这么多,轻松可得:
若\)T = \prod{p_i^{q_i}}$,那么

\[\sum_{d | T} μ(d) * d = \prod{1-p_i}
\]

1238 最小公倍数之和 V3

出一个数N,输出小于等于N的所有数,两两之间的最小公倍数之和。

相当于计算这段程序(程序中的lcm(i,j)表示i与j的最小公倍数):

由于结果很大,输出Mod 1000000007的结果。

G=0
for i=1 to N
for j=1 to N
G = (G + lcm(i,j)) mod 1000000007;

输入

输入一个数N。(2 <= N <= 10^10)

输出

输出G Mod 1000000007的结果。

输入样例

4

输出样例

72

题解

\[\sum_{i=1}^n\sum_{j=1}^n\textrm{lcm}(i,j)=\sum_{i=1}^n\sum_{j=1}^n\frac{ij}{\gcd(i,j)}\\
=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}ij[\gcd(i,j)=1]\\
=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}ij\sum_{d'|\gcd(i,j)}\mu(d)\\
=\sum_{d=1}^nd\sum_{d'=1}^{\lfloor\frac nd\rfloor}\mu(d')(d')^2\left(\sum_{i=1}^{\lfloor\frac n{dd'}\rfloor}i\right)^2
\]

然后就变成了LG3768 简单的数学题,外面多套了一个整除分块,不过不影响复杂度。(毒瘤)

51Nod 最大公约数之和V1,V2,V3;最小公倍数之和V1,V2,V3的更多相关文章

  1. 51nod 1238 最小公倍数之和 V3

    51nod 1238 最小公倍数之和 V3 求 \[ \sum_{i=1}^N\sum_{j=1}^N lcm(i,j) \] \(N\leq 10^{10}\) 先按照套路推一波反演的式子: \[ ...

  2. 51NOD 1238 最小公倍数之和 V3 [杜教筛]

    1238 最小公倍数之和 V3 三种做法!!! 见学习笔记,这里只贴代码 #include <iostream> #include <cstdio> #include < ...

  3. 51nod 1190 最小公倍数之和 V2

    给出2个数a, b,求LCM(a,b) + LCM(a+1,b) + .. + LCM(b,b). 例如:a = 1, b = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30 ...

  4. 51nod 1363 最小公倍数之和 ——欧拉函数

    给出一个n,求1-n这n个数,同n的最小公倍数的和.例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66. 由于结果很大,输出Mod 1000 ...

  5. 51nod1363 最小公倍数之和

    题目描述 给出一个n,求1-n这n个数,同n的最小公倍数的和. 例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66. 由于结果很大,输出Mo ...

  6. 2019t1_sumdoc_list.txt aa.docx acc baidu v2 sbb.docx Acc jindon v2 sbb.docx assetsList.html Atiitt 日本刑法典读后笔记.docx Atiti 遇到说花心的时候赞美应对.docx Atitit lesson.docx Atitit malye主义、mzd思想和dsp理论的区别和联系.docx Ati

    2019t1_sumdoc_list.txtaa.docxacc baidu v2 sbb.docxAcc jindon v2 sbb.docxassetsList.htmlAtiitt 日本刑法典读 ...

  7. Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤

    Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤 一.在ubuntu下尝试 1. 在虚拟机VWware Workstation 12. ...

  8. Kinect v2(Microsoft Kinect for Windows v2 )配置移动电源解决方案

    Kinect v2配置移动电源解决方案 Kinect v2如果用于移动机器人上(也可以是其他应用场景),为方便有效地展开后续工作,为其配置移动电源是十分必要的. 一.选择移动电源 Kinect v2原 ...

  9. 51Nod 最小公倍数之和V3

    这题公式真tm难推……为了这题费了我一个草稿本…… woc……在51Nod上码LaTeX码了两个多小时…… 一开始码完了前半段,刚码完后半段突然被51Nod吃了,重新码完后半段之后前半段又被吃了,吓得 ...

随机推荐

  1. 利用VBA来实现,输入日文之后,输出它的假名即读法

    背景:当你输日文汉字的额时候,输出它的读音. 如下图所示 实现的代码如下 Option Explicit ' Replace を まとめて おこなう Private Function ReplaceA ...

  2. npm包的语义版本控制(Semantic Versioning of Packages)

    本文删改自Node.js 8 the Right Way Part I Chapter 3 npm 使用语义版本控制(SemVer)来寻找包的最佳可用兼容版本. 以安装测试框架mocha为例 $ ​​ ...

  3. log4j测试示例

    引入依赖 <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId> ...

  4. Java spi 和Spring spi

    service provider framework是一个系统, 实现了SPI, 在系统里多个服务提供者模块可以提供一个服务的实现, 系统让客户端可以使用这些实现, 从而实现解耦. 一个service ...

  5. 11 Reponse对象+ServletContext对象

    1.HTTP协议: (1)请求消息:客户端发送给服务器端的数据 数据格式: 1. 请求行 2. 请求头 3. 请求空行 4. 请求体 (2)响应消息:服务器端发送给客户端的数据 * 数据格式: 1. ...

  6. setInterval定时器停止后,再重新启动

    1.数据自动滚动显示(动态添加) <li> <div class="FULeTi"> <div class="SLeName"&g ...

  7. Word 自带公式编写多行公式时在任意位置对齐 -- 含视频教程(10)

    1. 方法1:表格法之利用"点"运算符对齐(简单) 以下百度经验是我自己写的,不想放在上边了,移到这里. 2. 方法2:表格法之制表位对齐法(复杂) 未完 ...... 点击访问原 ...

  8. SpringCloud之Hystrix集群及集群监控turbine

    目的: Hystrix集群及监控turbine Feign.Hystrix整合之服务熔断服务降级彻底解耦 集群后超时设置 Hystrix集群及监控turbine 新建一个springboot工程mic ...

  9. 我的Vue朝圣之路1

    1. Vue是什么? 1). 一位华裔前Google工程师开发的前端js库         2). 一个MVVM框架         3). 核心概念              * 数据绑定      ...

  10. Online Hard Example Mining 理解

    Definition: Online Hard Example Mining (OHEM) is a way to pick hard examples with reduced computatio ...