P6272 [湖北省队互测2014]没有人的算术
Posted Point King の 博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P6272 [湖北省队互测2014]没有人的算术相关的知识,希望对你有一定的参考价值。
一道很有意思的题目,思路很新颖,但是代码有点繁琐,就不写了。这里就记录下思路。
一个比较 \\(\\text{naive}\\) 的想法是:我们暴力递归比较大小。这必然不行,非常蠢。
但是我们考虑到这个构造出来的数字满足我们一般数字比较大小的任何性质,所以我们能否考虑用一个一般数字去替代它,然后用一般数字比较大小?
是可行的,但是可能存在递归次数过深,一般数字的精度就不够了。
这里我们的处理方法就是暴力搞替罪羊树,然后就做完了。
P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)
整理的算法模板合集: ACM模板
实际上是一个全新的精炼模板整合计划
P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)
Problem
Solution
首先根据题意列出答案的暴力表达式:
a
n
s
=
∑
i
=
1
n
[
g
c
d
(
i
,
n
)
=
1
]
i
d
ans=\\sum\\limits_{i=1}^n[gcd(i,n)=1]i^d
ans=i=1∑n[gcd(i,n)=1]id
显然没法直接算,考虑套路莫反
a n s = ∑ i = 1 n [ g c d ( i , n ) = 1 ] i d = ∑ i = 1 n ∑ t ∣ i and t ∣ n μ ( t ) i d = ∑ i = 1 n ∑ t ∣ n μ ( t ) i d [ t ∣ i ] i ⇒ i × t = ∑ t ∣ n μ ( t ) ∑ i = 1 n t ( i × t ) d = ∑ t ∣ n μ ( t ) t d ∑ i = 1 n t i d \\begin{aligned}ans&=\\sum\\limits_{i=1}^n[gcd(i,n)=1]i^d&\\\\& =\\sum\\limits_{i=1}^n\\sum\\limits_{t|i \\ \\text{and}\\ t|n}\\mu(t)i^d&\\\\& =\\sum\\limits_{i=1}^n\\sum\\limits_{t|n}\\mu(t)i^d[t\\ |\\ i]&\\\\& i \\Rightarrow i\\times t &\\\\&=\\sum\\limits_{t|n}\\mu(t)\\sum\\limits_{i=1}^{\\frac{n}{t}}(i\\times t)^d&\\\\& =\\sum\\limits_{t|n}\\mu(t)t^d\\sum\\limits_{i=1}^{\\frac{n}{t}}i^d \\end{aligned} ans=i=1∑n[gcd(i,n)=1]id=i=1∑nt∣i and t∣n∑μ(t)id=i=1∑nt∣n∑μ(t)id[t ∣ i]i⇒i×t=t∣n∑μ(t)i=1∑tn(i×t)d=t∣n∑μ(t)tdi=1∑tnid
显然 ∑ i = 1 n t i d \\sum\\limits_{i=1}^{\\frac{n}{t}}i^d i=1∑tnid 是自然数幂之和,可以将其表示为一个关于 n t \\dfrac{n}{t} tn 的 d + 1 d+1 d+1 次多项式 ∑ i = 0 d + 1 f i ( n t ) i \\sum\\limits_{i=0}^{d+1}f_i(\\dfrac{n}{t})^i i=0∑d+1fi(tn)i,我们可以算出自然数幂之和的前 d + 2 d+2 d+2 项, d + 2 d+2 d+2 项可以确定一个 d + 1 d+1 d+1 项的多项式,我们可以直接用拉格朗日插值法 O ( n ) O(n) O(n) 求出 n n n 次多项式 f f f 的所有系数。
即:
a
n
s
=
∑
t
∣
n
μ
(
t
)
t
d
∑
i
=
0
d
+
1
f
i
(
n
t
)
i
=
∑
t
∣
n
μ
(
t
)
∑
i
=
0
d
+
1
f
i
n
i
t
d
−
i
=
∑
i
=
0
d
+
1
∑
t
∣
n
μ
(
t
)
f
i
n
i
t
d
−
i
=
∑
i
=
0
d
+
1
f
i
n
i
∑
t
∣
n
μ
(
t
)
t
d
−
i
\\begin{aligned}ans&=\\sum\\limits_{t|n}\\mu(t)t^d\\sum\\limits_{i=0}^{d+1}f_i(\\frac{n}{t})^i&\\\\& =\\sum\\limits_{t|n}\\mu(t)\\sum\\limits_{i=0}^{d+1}f_in^it^{d-i}&\\\\& =\\sum\\limits_{i=0}^{d+1}\\sum\\limits_{t|n}\\mu(t)f_in^it^{d-i}&\\\\&=\\sum\\limits_{i=0}^{d+1}f_in^i\\sum\\limits_{t|n}\\mu(t)t^{d-i}\\end{aligned}
ans=t∣n∑μ(t)tdi=0∑d+1fi(tn)i=t∣n∑μ(t)i=0∑d+1finitd−i=i=0∑d+1t∣n∑μ(t)fin< 以上是关于P6272 [湖北省队互测2014]没有人的算术的主要内容,如果未能解决你的问题,请参考以下文章 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)