bzoj4314 倍数?倍数!加强版

12 篇文章 1 订阅
4 篇文章 0 订阅

问题:求 [ 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=1nwnikF(wni)=n1i=1nwnikj=1n(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/dj,即

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=1nwnikj=1n(1+wn/di/dj)=n1dn(j=1n/dwnjdk[(j,n/d)=1])[j=1n/d(1+wn/dj)]d
考虑单位根的定义,有

( x n − 1 ) = ∏ ( x − w n i ) (x^n-1)=\prod(x-w_n^i) (xn1)=(xwni)

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=n1dn(j=1n/dwnjdk[(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/dwnjdk[(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/dwnjdk=j=1n/dwn/djk,则 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)dx,x̸=df(x)

考虑 g ( d ) g(d) g(d),显然当 n / d ∣ k n/d|k n/dk 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=n1dnf(d)[1(y)n/d]d

枚举 n n n的约数计算这个即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值