/*
http://acm.hdu.edu.cn/showproblem.php?pid=2079
简单的母函数题目;
开始把题目看错,以为个相同学分的不同科目是算不同的;
后来发现是相同的;
如果是不同的,那结果很大;
当然这是我审题错误;
*/
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <string> #include <iomanip> int g[9],la[55],lb[55]; using namespace std; int main(int argc, char *argv[]) { int t,n,k,a,b; cin>>t; while(t--) { cin>>n>>k; memset(g,0,sizeof(g)); for(int i = 0; i < k; i++) { cin>>a>>b; g[a] = b; } memset(la,0,sizeof(la)); memset(lb,0,sizeof(lb)); for(int i = 0; i <= g[1]; i++) la[i] = 1; for(int i = 2; i <= 8; i++) { for(int j = 0; j <= 40; j++) { for(int k = 0,s = 0; (s<=g[i])&&(j+k<=40); k+=i,s++) lb[j+k] += la[j]; } for(int j = 0; j <= 40; j++) { la[j] = lb[j]; lb[j] = 0; } } cout<<la[n]<<endl; } return 0; }