bzoj 3028 母函数

  首先我们可以求出来所有食物的母函数:

  汉堡:f(x)=1/(1-x^2)。

  可乐:f(x)=1+x.

  鸡腿:f(x)=1+x+x^2.

  蜜桃多:f(x)=x/(1-x^2).

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

  包子:f(x)=1+x+x^2+x^3.

  土豆片炒肉:f(x)=1+x.

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

  然后我们可以将他们全乘起来,得到f(x)=x/(1-x)^4.然后根据泰勒展开1/(1-x)^n=1+C(n,1)x^1+C(n+1,2)x^2+C(n+2,3)x^3+...+C(n+k-1,k)x^k+...。

  可以得到第n项的系数为c(n+2,3),根据卷积原理,这个就是最后的答案。

/**************************************************************

    Problem: 3028

    User: BLADEVIL

    Language: C++

    Result: Accepted

    Time:0 ms

    Memory:804 kb

****************************************************************/

 

//By BLADEVIL

#include <cstdio>

#include <cstring>

#define d39 10007

 

using namespace std;

 

char a[510];

 

int main() {

    int ans=0;

    scanf("%s",a); int len=strlen(a);

    for (int i=0;i<len;i++) ans=(ans*10+a[i]-'0')%d39;

    ans=ans*(ans+1)%d39*(ans+2)%d39*1668%d39;

    printf("%d\n",ans);

    return 0;

}

 

 

你可能感兴趣的:(ZOJ)