记录编号 |
121733 |
评测结果 |
AAAAA |
题目名称 |
三只小猪 |
最终得分 |
100 |
用户昵称 |
TA |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2014-09-21 10:11:00 |
内存使用 |
1.32 MiB |
显示代码纯文本
#include<iostream>
#include<iomanip>
using namespace std;
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
#define W 1000000000
unsigned long long f[51][51][51];
main(){
freopen("piggy.in","r",stdin);freopen("piggy.out","w",stdout);
ios::sync_with_stdio(false);
short T,n,m,i=-1,j,t=-1,k,maxk;
scanf("%hd",&T);
while(++i<51)
for(j=-1;++j<51;)
f[i][j][0]=1;
f[0][0][1]=1;
for(i=0;++i<51;)
for(j=0;++j<=i;){
f[i][j][1]=f[i-1][j-1][1]+j*f[i-1][j][1];
maxk=max(f[i-1][j][0],f[i-1][j-1][0])+1;
for(k=1;++k<maxk;){
f[i][j][k]=f[i-1][j-1][k]+j*f[i-1][j][k]+f[i][j][k-1]/W;
f[i][j][k-1]%=W;
}
f[i][j][k]=f[i][j][k-1]/W;
f[i][j][0]=k-1;
if(f[i][j][k]){
++f[i][j][0];
f[i][j][k-1]%=W;
}
/*cout<<i<<","<<j<<":"<<f[i][j][f[i][j][0]];
for(k=f[i][j][0];--k;)
cout<<setw(9)<<f[i][j][k];
cout<<endl;*/
}
cout.fill('0');
while(++t<T){
scanf("%hd%hd",&n,&m);
cout<<f[n][m][f[n][m][0]];
for(i=f[n][m][0];--i;)
cout<<setw(9)<<f[n][m][i];
cout<<endl;
}
}