#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX=50;
#define CLR(arr,val) memset(arr,val,sizeof(arr))
int n,m,value[MAX],temp[MAX];
int main()
{ cin>>m;
while(m--)
{ cin>>n;
fill(value,value+MAX,1);//value用来存储系数
CLR(temp,0);//temp用来保存每一次的情况
for(int i=2;i<=n;i++)
{ for(int j=0;j<=n;j++)
for(int k=0;k+j<=n;k+=i) //控制每次系数的变化和每个数出现的最大项数
temp[k+j]+=value[j];
for(int j=0;j<=n;j++)
value[j]=temp[j],temp[j]=0;
}
cout<<value[n]<<endl;
}
return 0;
}
网友评论