bzoj 3028: 食物

吐槽??(这个题我连一开始幼儿园级别的化简式子有搞错了2333虚)

这貌似应该叫(指数型)生成函数。

然后最后化简就剩下一个x*(1-x)^(-4),把这个东西展开,第n项的系数就是答案了。

然而怎么展开呢??

(以下部分纯属本蒟蒻从众神犇题解上扒下来用来装B用233)

用麦克劳林展开,我记得百度上说麦克劳林展开是泰勒公式的特殊情况,(其实就是x=0)

然后根据这个展开式,这个系数就是x*(1-x)^(-4)这个东西的 n 阶导数0处取值再除个阶乘,

然后问题就变成求阶乘了,然后这个两个函数乘起来求高阶导数有个叫布莱尼此公式的东西

然后求出导数来,发现只剩下两项。

再把x=0带进去,就剩一项辣:n*(n+2)!/3!*1

再除掉n!,剩下的东西是C(n+2,3)

GG

剩下的事情就是乱搞和吐槽了

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int mod=10007;
 5 const int maxn=505;
 6 
 7 int ksm(int x, int p)
 8 {
 9     int sum=1;
10     for (;p;p>>=1,x=x*x%mod)
11         if (p&1) sum=sum*x%mod;
12     return sum;
13 }
14 
15 char s[maxn];
16 int n;
17 
18 int main()
19 {
20     scanf("%s",s+1);
21     for (int i=1; s[i]; i++)
22         n=(n*10+(s[i]-'0'))%mod;
23     printf("%d\n",(n*(n+1)%mod*(n+2)%mod*ksm(6,mod-2)%mod)%mod);
24     return 0;
25 }

 

posted @ 2017-04-19 15:51  ws_ccd  阅读(127)  评论(0编辑  收藏  举报