bzoj3028: 食物 组合数学+生成函数

来源:互联网 发布:发那科pmc编程软件 编辑:程序博客网 时间:2024/05/16 18:48

应ljm之邀请学习生成函数,看资料总说f(x)=1+x+x^2+……=1/(1-x),也没说为什么,问了数学老师才知道:

 f(x)=1+x+x^2+……

x f(x)= x+x^2+……

所以:f(x)- xf(x)= 1/(1-x)

 

 

首先列出所有食物的母函数

汉堡:1+x^2+x^4+.....=1/(1-x^2)

可乐:1+x

鸡腿:1+x+x^2

蜜桃多:x+x^3+x^5+.....=x/(1-x^2)

鸡块:1+x^4+x^8+....=1/(1-x^4)

包子:1+x+x^2+x^3

土豆:1+x

面包:1+x^3+x^6+...=1/(1-x^3)

母函数有一个很有用的用处:把所有食物的母函数相乘后,x^n项的系数就是答案

整理后得:F(x)=x/(1-x)^4

又经过一系列的学习和资料,终于似是而非的好像明白了下面的结论:

https://wenku.baidu.com/view/4ccc7e69f342336c1eb91a37f111f18583d00caf###



所求的第k项:1/(1-x)^4的第k-1项,是c(n+k-1-1,n-1),本题中n=4,所以答案是:c(k+2,3)

代码没写,抄的popopqq的

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define M 510#define MOD 10007using namespace std;int n;char s[M];int main(){int i;scanf("%s",s+1);for(i=1;s[i];i++)(n=(n<<1)+(n<<3)+(s[i]-'0'))%=MOD;cout<<(n*(n+1)%MOD*(n+2)%MOD*1668%MOD)<<endl;return 0;}


 

原创粉丝点击