分析:母函数(详细见找单词)
代码:
#include<cstdio>
#include<cstring>
int num[10], c1[50], c2[50];
int main(){
int T, n, k;
scanf("%d", &T);
while(T--){
for(int i = 0; i < 9; i++)
num[0] = 0;
for(int i = 0; i < 50; i++){
c1[i] = 0;
c2[i] = 0;
}
c1[0] = 1;
scanf("%d%d", &n, &k);
for(int i = 0; i < k; i++){
int a, b;
scanf("%d%d", &a, &b);
num[a] = b;
}
for(int i = 1; i < 9; i++){
for(int j = 0; j <= num[i]; j++)
for(int k = i*j; k <= n; k++)
c2[k] += c1[k - i*j];
memcpy(c1, c2, sizeof(c2));
memset(c2, 0, sizeof(c2));
}
printf("%d\n", c1[n]);
}
return 0;
}