TopCoder SRM 502 TheCowDivOne

题意

给定\(n,K\),求从\(\{0,1,\cdots,n-1\}\)选出\(K\)个数,和为\(n\)的倍数的方案数
\(K\le 10^3\)
\(n\le 10^9\)

做法

显然有

\[ans=\sum_{i=0}^{\frac{n(n-1)}{2}} [n|i][x^i][y^k]\prod_{j=0}^{n-1} (1+x^jy) \]

根据\([n|k]=\frac{1}{n}\sum\limits_{i=0}^{n-1}\omega_n^{ik}\),有:

\[ans=[y^k]\frac{1}{n}\sum\limits_{i=0}^{n-1}\prod\limits_{j=0}^{n-1}(1+\omega_n^{ij}y) \]

结论1\(\prod\limits_{i=0}^{n-1}(1+\omega_n^{ki}y)=(\prod\limits_{i=0}^{\frac{n}{t}-1}(1+\omega_{\frac{n}{t}}^{i}))^{t}\)(其中\(t=(n,k)\)

证明:
显然\((\prod\limits_{i=0}^{\frac{n}{t}-1}(1+\omega_{\frac{n}{t}}^{\frac{k}{t}i}))^{t}\)
由于\((\frac{k}{t}\frac{n}{t})=1\),且\(\{0,1,\cdots,\frac{n}{t}-1\}\)是模\(\frac{n}{t}\)的完全剩余系
\(\{\frac{k}{t}i|i\in[0,\frac{n}{t})\}\)也是模\(\frac{n}{t}\)的完全剩余系,得证。

我们枚举\((n,k)=\frac{n}{d}\),很容易得到

\[ans=[y^k]{1\over n} \sum_{d|n} \phi(d)\prod_{j=0}^{d-1} (1+\omega_d^{j}y)^{n\over d} \]

结论2\(\prod\limits_{i=0}^{n-1}(1+\omega_n^iy)=1+(-1)^{n+1}y^n\)

证明:
根据定理\(x^n-1=\prod\limits_{i=0}^{n-1}(x-\omega_n^i)\)
我们知道\(\prod\limits_{i=0}^{n-1}(1+\omega_n^iy)\)只有\(y^0,y^n\)的系数可能不为\(0\)
\(y^0\)的系数显然为\(1\)\(y^n\)的系数为\(\omega_n^{\frac{n(n-1)}{2}}\)
\(n\)为奇数,\(\omega_n^{\frac{n(n-1)}{2}}=(\omega_n^n)^{\frac{(n-1)}{2}}=1^{\frac{(n-1)}{2}}=1\)
\(n\)为偶数,\(\omega_n^{\frac{n(n-1)}{2}}=(\omega_n^{\frac{n}{2}})^{n-1}=(-1)^{n-1}=-1\)
\(\omega_n^{\frac{n(n-1)}{2}}=(-1)^{n+1}\),得证。

\[\begin{aligned} ans&=[y^k]\frac{1}{n}\sum\limits_{d|n}\phi(d)(1+(-1)^{d+1}y^d)^{\frac{n}{d}}\\ &=[y^k]\frac{1}{n}\sum\limits_{d|n}\phi(d)\sum\limits_{j=0}^{\frac{n}{d}}{\frac{n}{d}\choose j}(-1)^{(d+1)j}y^{dj}\\ &=\frac{1}{n}\sum\limits_{d|n,d|k}\phi(d){\frac{n}{d}\choose \frac{k}{d}}(-1)^{(d+1)\frac{k}{d}}\\ \end{aligned}\]

由于\(k\le 1000\),可以直接暴力算

posted @ 2021-01-19 15:48  Grice  阅读(156)  评论(0编辑  收藏  举报