TopCoder SRM 502 TheCowDivOne
题意
给定\(n,K\),求从\(\{0,1,\cdots,n-1\}\)选出\(K\)个数,和为\(n\)的倍数的方案数
\(K\le 10^3\)
\(n\le 10^9\)
做法
显然有
根据\([n|k]=\frac{1}{n}\sum\limits_{i=0}^{n-1}\omega_n^{ik}\),有:
结论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}\),很容易得到
结论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}\),得证。
由于\(k\le 1000\),可以直接暴力算