问题:求 [ 1 , n ] [1,n] [1,n]中选 m m m个互不相同的数使得他们的和膜 n n n等于 k k k的方案数
Joker \texttt{Joker} Joker太神了!
题解:如果没有
m
m
m的限制,实际上相当于求
∏
i
=
1
n
(
1
+
x
i
)
\prod_{i=1}^n (1+x^i)
∏i=1n(1+xi)所有次数是膜
n
n
n为
k
k
k的项的系数和
考虑用单位根来计算这个
可以发现,设 F ( x ) = ∏ i = 1 n ( 1 + x i ) F(x)=\prod_{i=1}^n (1+x^i) F(x)=∏i=1n(1+xi),则答案为
a n s = 1 n ∑ i = 1 n w n − i k F ( w n i ) = 1 n ∑ i = 1 n w n − i k ∏ j = 1 n ( 1 + w n i j ) \\ ans=\frac{1}{n}\sum_{i=1}^nw_n^{-ik}F(w_n^i)=\frac{1}{n}\sum_{i=1}^nw_n^{-ik}\prod_{j=1}^n(1+w_n^{ij}) ans=n1i=1∑nwn−ikF(wni)=n1i=1∑nwn−ikj=1∏n(1+wnij)
令 d = g c d ( i , n ) d=gcd(i,n) d=gcd(i,n),则 w n i j = w n / d i / d ∗ j w_n^{ij}=w_{n/d}^{i/d*j} wnij=wn/di/d∗j,即
a
n
s
=
1
n
∑
i
=
1
n
w
n
−
i
k
∏
j
=
1
n
(
1
+
w
n
/
d
i
/
d
∗
j
)
=
1
n
∑
d
∣
n
(
∑
j
=
1
n
/
d
w
n
−
j
d
k
[
(
j
,
n
/
d
)
=
1
]
)
[
∏
j
=
1
n
/
d
(
1
+
w
n
/
d
j
)
]
d
\\ ans=\frac{1}{n}\sum_{i=1}^nw_n^{-ik}\prod_{j=1}^n(1+w_{n/d}^{i/d*j})\\ \newline =\frac{1}{n}\sum_{d|n}(\sum_{j=1}^{n/d}w_n^{-jdk}[(j,n/d)=1])[\prod_{j=1}^{n/d}(1+w_{n/d}^j)]^d
ans=n1i=1∑nwn−ikj=1∏n(1+wn/di/d∗j)=n1d∣n∑(j=1∑n/dwn−jdk[(j,n/d)=1])[j=1∏n/d(1+wn/dj)]d
考虑单位根的定义,有
( x n − 1 ) = ∏ ( x − w n i ) (x^n-1)=\prod(x-w_n^i) (xn−1)=∏(x−wni)
把 x = 1 x=1 x=1带入,并将 w n i w_n^i wni符号取反可得
∏ ( 1 + w n i ) = 1 − ( − 1 ) n \prod(1+w_n^i)=1-(-1)^n ∏(1+wni)=1−(−1)n
即:
a
n
s
=
1
n
∑
d
∣
n
(
∑
j
=
1
n
/
d
w
n
−
j
d
k
[
(
j
,
n
/
d
)
=
1
]
)
[
1
−
(
−
1
)
n
/
d
]
d
\\ ans=\frac{1}{n}\sum_{d|n}(\sum_{j=1}^{n/d}w_n^{-jdk}[(j,n/d)=1])[1-(-1)^{n/d}]^d
ans=n1d∣n∑(j=1∑n/dwn−jdk[(j,n/d)=1])[1−(−1)n/d]d
令 f ( d ) = ∑ j = 1 n / d w n − j d k [ ( j , n / d ) = 1 ] f(d)=\sum_{j=1}^{n/d}w_n^{-jdk}[(j,n/d)=1] f(d)=∑j=1n/dwn−jdk[(j,n/d)=1],考虑如何算这个,可以考虑容斥,令 g ( d ) = ∑ j = 1 n / d w n − j d k = ∑ j = 1 n / d w n / d − j k g(d)=\sum_{j=1}^{n/d}w_n^{-jdk}=\sum_{j=1}^{n/d}w_{n/d}^{-jk} g(d)=∑j=1n/dwn−jdk=∑j=1n/dwn/d−jk,则 f ( d ) = g ( d ) − ∑ d ∣ x , x ≠ d f ( x ) f(d)=g(d)-\sum_{d|x,x≠d}f(x) f(d)=g(d)−∑d∣x,x̸=df(x)
考虑 g ( d ) g(d) g(d),显然当 n / d ∣ k n/d|k n/d∣k时 g ( d ) = n / d g(d)=n/d g(d)=n/d,否则 g ( d ) = 0 g(d)=0 g(d)=0,可以闭上眼睛感受一下,就是这些单位根转了一圈刚好抵消的样子。。。
考虑 m m m的限制,其实直接改成 F ( x ) = ∏ ( 1 + x i y ) F(x)=\prod(1+x^iy) F(x)=∏(1+xiy)即可,最后要求 y m y^m ym。所以最后的式子就这样子:
a n s = 1 n ∑ d ∣ n f ( d ) [ 1 − ( − y ) n / d ] d \\ ans=\frac{1}{n}\sum_{d|n}f(d)[1-(-y)^{n/d}]^d ans=n1d∣n∑f(d)[1−(−y)n/d]d
枚举 n n n的约数计算这个即可。