UESTC 1726 母函数

题意:给定整数N,求有多少种方案,能将其分解为若干不同正数的和?(1<=N<=1000)

例如N=4,有4=4,4=3+1两种,    4=2+2, 2重复,不满足条件。  4=3+1和4=1+3算一种。

分析:(1+x)*(1+x^2)*(1+x^3)……(1+x^n),x^n的系数即为答案。

 

 

const int mod = 19901014;
const int N = 1000;
int a[2][N+5], p, q;
int n;

void init(){
    a[0][0] = 1;
    FOE(i, 1, N){
        p = 1-q;
        FOE(j, 0, N)
            if(a[q][j]){    //这句还是很有效的
                a[p][j] = (a[p][j] + a[q][j]) % mod;
                if(j+i<=N) a[p][j+i] = (a[p][j+i] + a[q][j]) % mod;
            }
        memset(a[q], 0, sizeof a[q]);
        q = p;
    }
}

int main(){
    #ifndef ONLINE_JUDGE            //UESTC的oj  貌似不能用这东西???
    //freopen("in.txt","r",stdin);  //坑死我了。。
    //freopen("out.txt","w",stdout);
    #endif

    init();

    int T; scanf("%d", &T);
    while(T--){
        scanf("%d", &n);
        printf("%d\n", a[q][n]);
    }

    return 0;
}

 

posted @ 2013-05-22 21:25  心向往之  阅读(155)  评论(0编辑  收藏  举报