51nod - 1363 - 最小公倍数之和 - 数论
Posted yinku
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod - 1363 - 最小公倍数之和 - 数论相关的知识,希望对你有一定的参考价值。
https://www.51nod.com/Challenge/Problem.html#!#problemId=1363
求\(\sum\limits_i=1^nlcm(i,n)\)
先换成gcd:
\(\sum\limits_i=1^n\fraci*ngcd(i,n)\)
显而易见,枚举g:
$ n * \sum\limits_g|n \frac1g \sum\limits_i=1^n i*[gcd(i,n)==g] $
提g,没有下整符号:
$ n * \sum\limits_g|n \frac1g \sum\limits_i=1^\fracng i*[gcd(i,\fracng)==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+...+\fracnd) $
$\sum\limits_d|n\mu(d)d\frac(1+\fracnd)*\fracnd2 $
即:
$\fracn2\sum\limits_d|n\mu(d)(1+\fracnd) $
里面分配率:
$\fracn2(\sum\limits_d|n\mu(d)+\sum\limits_d|n\mu(d)\fracnd) $
然后一换:
\(\fracn2([n==1]+\varphi(n) )\)
求这个东西的复杂度很显然,预处理因子的欧拉函数是根号的,求单个n的欧拉函数也是根号的,所以整个式子就是根号的。
记这个子问题为 \(p(n)=\sum\limits_i=1^n i*[gcd(i,n)==1] = \fracn2([n==1]+\varphi(n) )\),求解它的复杂度就来源于欧拉函数
回到$ n * \sum\limits_g|n \frac1g p(\fracng) $
非常明显根号以内的欧拉函数可以重复利用,然后单独求一个最大的。
总体复杂度是根号的。理论上根号是过不了的,1.7e8左右,但是看别人搞什么质因数分解?这个不也是最坏根号的吗?我觉得他们能行我也能行。
以上是关于51nod - 1363 - 最小公倍数之和 - 数论的主要内容,如果未能解决你的问题,请参考以下文章