比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 分组 最终得分 100
用户昵称 Rivendell 运行时间 0.008 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2014-11-04 18:03:21
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int ans[11]={0},n,m,anss;
void work(int i,int nn,int last)
{
	int j;
	if (i>m&&nn==n)
	{
		++anss;
        return;
	}
	if (i>m) return;
	if ((n-nn)/(m-i+1)<last) return;
	for (j=last;j<=n;++j)
	{
		ans[i]=j;
		work(i+1,nn+j,j);
	}
}
void work1(int i,int nn,int last)
{
	int j;
	if (i>m&&nn==n)
	{
		for (j=1;j<=m;++j)
		  cout<<ans[j]<<" ";
		cout<<endl;
        return;
	}
	if (i>m) return;
	if ((n-nn)/(m-i+1)<last) return;
	for (j=last;j<=n;++j)
	{
		ans[i]=j;
		work1(i+1,nn+j,j);
	}
}
int main()
{
	freopen("dataa.in","r",stdin);
	freopen("dataa.out","w",stdout);
	
	int i,j;
	cin>>n>>m;
	anss=0;
	work(1,0,1);
	cout<<anss<<endl;
	work1(1,0,1);
	
	fclose(stdin);
	fclose(stdout);
}