bzoj 3028 食物

题目大意:

要带k种东西分别满足如下条件
物品1:偶数个
物品2:0个或1个
物品3:0个,1个或2个
物品4:奇数个
物品5:4的倍数个
物品6:0个,1个,2个或3个
物品7:不超过一个
物品8:3的倍数个

思路:

把这些物品都写成生成函数形式 得 $$(1+x^2+x^4+...) \times (1+x) \times (1+x+x^2) \times (x+x^3+x^5+...) \times (1+x^4+x^8+...) \times (1+x+x^2+x^3) \times (1+x) \times (1+x^3+x^6+...)$$

进而得 $$( \frac{1}{1-x^2}) \times (1+x) \times (\frac{1-x^3}{1-x}) \times (\frac{x}{1-x^2}) \times (\frac{1}{1-x^4}) \times (\frac{1-x^4}{1-x}) \times (1+x) \times (\frac{1}{1-x^3})$$

化简得$\frac{x}{(1-x)^4}$,我们需要求$x^n$这一项的系数,接下来两种操作

法1:将式子展开得到$x \times (1+x+x^2+...)^4$ 

则相当于求将$n-1$划分成四个自然数的方案数 考虑在$n$个空里插三个板 答案为$C_{n+2}^3$

法2:考虑泰勒展开则$x \times (1-x)^{-4}=\sum_{i=0}^n f^i(0) \times \frac {x^i}{i!}$

$n-1$次的系数为 $\frac{f^(n-1)(0)}{(n-1)!}$

$f'=(-4)*(u)^{-5}*(1-x)'=4*(1-x)^{-5}$求导以此类推

即原式为$$\frac {\prod_{i=1}^{n-1} {i+3}} {(n-1)!}=n*(n+1)*(n+2)/6=C_{n+2}^3$$

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<cmath>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 #include<map>
10 #include<set>
11 #define ll long long
12 #define inf 2139062143
13 #define MAXN 100100
14 #define MOD 10007
15 #define rep(i,s,t) for(register int i=(s),i##__end=(t);i<=i##__end;++i)
16 #define dwn(i,s,t) for(register int i=(s),i##__end=(t);i>=i##__end;--i)
17 #define ren(x) for(register int i=fst[x];i;i=nxt[i])
18 #define pb(i,x) vec[i].push_back(x)
19 #define pls(a,b) (a+b)%MOD
20 #define mns(a,b) (a-b+MOD)%MOD
21 #define mlp(a,b) (1LL*(a)*(b))%MOD
22 using namespace std;
23 inline int read()
24 {
25     int x=0,f=1;char ch=getchar();
26     while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
27     while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}
28     return x*f;
29 }
30 int n;char ch;
31 int q_pow(int bas,int t,int res=1)
32 {
33     for(;t;bas=mlp(bas,bas),t>>=1)
34         if(t&1) res=mlp(res,bas);return res;
35 }
36 int main()
37 {
38     ch=getchar();
39     while(isdigit(ch)) {n=(n*10+ch-'0')%MOD;ch=getchar();}
40     printf("%d\n",mlp(mlp(mlp(n,n+1),n+2),q_pow(6,MOD-2)));
41 }
View Code

 

posted @ 2019-02-26 17:50  jack_yyc  阅读(440)  评论(0编辑  收藏  举报