应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;f(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 10007
using 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;
}