记录编号 121733 评测结果 AAAAA
题目名称 三只小猪 最终得分 100
用户昵称 GravatarTA 是否通过 通过
代码语言 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;
	}
}