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; }