HDU 2082
思路:组合问题,这类问题可以考虑用母函数做,但要注意初始化以及细节问题,大部分能用母函数解决的都是大同小异,只是某些细节注意,另外一定要明白母函数的原理和到底怎么回事,这样才能用起来得心应手。
#include<stdio.h> int a[7500],b[7500],c[27]; int main() { int i,j,k,n,sum; //freopen("in.c","r",stdin); scanf("%d",&n); while(n--) { sum = 0; for(i = 1;i <= 26;i ++) scanf("%d",&c[i]); for(i = 0;i <= 50;i ++) { a[i] = 0; b[i] = 0; } for(i = 0;i <= c[1];i ++) a[i] = 1; for(i = 2;i <= 26;i ++) { for(j = 0;j <= 50;j ++) { for(k = 0;k <= i*c[i];k += i) b[j+k] += a[j]; } for(j = 0;j <= 50;j ++) { a[j] = b[j]; b[j] = 0; } } for(i = 1;i <= 50;i ++) sum += a[i]; printf("%d\n",sum); } }