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. Markdown Html高级功能 测试用例

    插入音频 后台样式代码: #cnblogs_post_body .music { height: 140px; /*padding-bottom: 14.39%;*/ /* 16:9 */ posit ...

  2. Java开发笔记(一百一十八)AWT按钮

    前面介绍了如何通过AWT显示程序的窗口界面,那么要怎样在该窗口上面添加丰富多样的控件呢?注意Frame类是个窗口工具,它由窗楣(标题栏)与窗体(窗口主界面)两部分组成,故而Frame类只对整个窗口统筹 ...

  3. day29——socket套接字(少量不全)

    day29 socket套接字 socket是处于应用层与传输层之间的抽象层,他是一组操作起来非常简单的接口(接受数据)此接口接受数据之后,交由操作系统. 为什么存在socket抽象层? 如果直接与操 ...

  4. 基于CentOS6.5的Dubbo及Zookeeper配置

    基于CentOS的Dubbo及Zookeeper配置 需要提前准备好的资料: 1.首先配置java环境 步骤: 将jdk的包上传至centos服务器的/opt目录下,并且解压 tar -zxvf jd ...

  5. zookerper入门、核心概念和使用场景

    zookeeper是一个分布式程序的高性能协调服务,提供集中式信息存储服务,数据存储于内存中,类似文件系统的树形结构,高吞吐量和低延时,集群高可靠,基于zookeeper可以实现分布式统一配置中心.分 ...

  6. Java身份证处理工具

    身份证处理工具 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * & ...

  7. java之struts2之类型转换

    在使用servlet开发中,表单中提交的数据到servlet后都是字符串类型,需要程序员手动进行类型转换. 但是到struts2后,基本数据类型struts2都可以转换.但是如果是自定义类型,stru ...

  8. DevExtreme学习笔记(一) DataGrid中数据筛选

    config.filterRow = { visible: true, applyFilter: "auto" }; config.headerFilter = { visible ...

  9. 实战远程文件同步(Remote File Sync)

    1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...

  10. Replace到达地

    string getcstr(string cs)        {            String SplitKey = @"乌孜别克族,柯尔克孜族,维吾尔族, 鄂伦春族, 哈萨克族, ...