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. Spring中的AOP实现思路

    AOP是面向切面编程,为什么在切面中写一个注解方法@Before,这个方法会在目标方法前面执行呢 基于JDK动态代理实现上面说的情况 自定义注解 @Target({ ElementType.METHO ...

  2. 【NOIP2017】宝藏 题解(状压DP)

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nnn 个深埋在地下的宝藏屋, 也给出了这 nnn 个宝藏屋之间可供开发的m mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中 ...

  3. python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

    12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...

  4. STL对map排序

    // sort start typedef struct{ ... }Node; // Map的键是字符串,值是结构体.虽然有自动排序特性,但是按字符串的排序并不能符合要求.此时,Map的key可以视 ...

  5. C++多态性----运算符重载与虚函数

    一.多态性 ①概述:多态是指同样的消息被不同类型的对象接收时导致的不同行为. ②类型: 可以分为四类:重载多态.强制多态.包含多态.参数多态. ------------------------ --- ...

  6. spring boot + vue实现图片上传及展示

    转载:https://blog.csdn.net/weixin_40337982/article/details/84031778 其中一部分对我很有帮助 转载记录下 首先,html页面: <! ...

  7. quartz2.3.0(十五)执行、暂停、继续执行、清除,花式操作数据库中持久化的job任务

    #################################################################################################### ...

  8. Gym102028G Shortest Paths on Random Forests 生成函数、多项式Exp

    传送门 神仙题-- 考虑计算三个部分:1.\(n\)个点的森林的数量,这个是期望的分母:2.\(n\)个点的所有森林中存在最短路的点对的最短路径长度之和:3.\(n\)个点的所有路径中存在最短路的点对 ...

  9. go 学习笔记(4) package

    package name 尽量与目录名称一样 package name: 表示代码文件所属的包

  10. c#部分类

    c#提供了一个部分类,它只显示类的一部分,用关键字partical修饰 using System; public partial class Course { public int Id { get; ...