码迷,mamicode.com
首页 > 其他好文 > 详细

51nod - 1363 - 最小公倍数之和 - 数论

时间:2019-06-07 13:01:12      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:problem   mat   ==   htm   一个   html   lcm   没有   最小   

https://www.51nod.com/Challenge/Problem.html#!#problemId=1363
\(\sum\limits_{i=1}^{n}lcm(i,n)\)


先换成gcd:
\(\sum\limits_{i=1}^{n}\frac{i*n}{gcd(i,n)}\)

显而易见,枚举g:
$ n * \sum\limits_{g|n} \frac{1}{g} \sum\limits_{i=1}^{n} i*[gcd(i,n)==g] $

提g,没有下整符号:
$ n * \sum\limits_{g|n} \frac{1}{g} \sum\limits_{i=1}^{\frac{n}{g}} i*[gcd(i,\frac{n}{g})==1] $


考虑子问题:
$\sum\limits_{i=1}^{n} i*[gcd(i,n)==1] $

也就是n以内和n互质的数的和。
显然可以枚举因数d把他们减掉:
$\sum\limits_{i=1}^{n} i + \sum\limits_{d|n,d!=1}\mu(d)(d+2d+3d+...+n) $

显然前面那堆等于 \(d==1\) 的结果。
$\sum\limits_{d|n}\mu(d)(d+2d+3d+...+n) $

比如求36的互质数的和时,6在枚举2和枚举3的时候算重,要加回去,4在枚举2的时候算过,不用算。
化简:
$ \sum\limits_{d|n}\mu(d)d(1+2+3+...+\frac{n}{d}) $
$\sum\limits_{d|n}\mu(d)d\frac{(1+\frac{n}{d})*\frac{n}{d}}{2} $

即:
$\frac{n}{2}\sum\limits_{d|n}\mu(d)(1+\frac{n}{d}) $
里面分配率:
$\frac{n}{2}(\sum\limits_{d|n}\mu(d)+\sum\limits_{d|n}\mu(d)\frac{n}{d}) $

然后一换:
\(\frac{n}{2}([n==1]+\varphi(n) )\)

求这个东西的复杂度很显然,预处理因子的欧拉函数是根号的,求单个n的欧拉函数也是根号的,所以整个式子就是根号的。

记这个子问题为 \(p(n)=\sum\limits_{i=1}^{n} i*[gcd(i,n)==1] = \frac{n}{2}([n==1]+\varphi(n) )\),求解它的复杂度就来源于欧拉函数


回到$ n * \sum\limits_{g|n} \frac{1}{g} p(\frac{n}{g}) $

非常明显根号以内的欧拉函数可以重复利用,然后单独求一个最大的。

总体复杂度是根号的。理论上根号是过不了的,1.7e8左右,但是看别人搞什么质因数分解?这个不也是最坏根号的吗?我觉得他们能行我也能行。

51nod - 1363 - 最小公倍数之和 - 数论

标签:problem   mat   ==   htm   一个   html   lcm   没有   最小   

原文地址:https://www.cnblogs.com/Yinku/p/10987912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!