HOJ_1134 Game of Connections 卡特兰数+大数

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1134

跟HOJ的1023和1130几乎一模一样,只是循环读取数据的条件不同。

附:HOJ_1023 Train Problem II,HOJ_1130 How Many Trees? 卡特兰数+大数乘除

本题代码:

//1134
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=2000;
void ds_cheng(int s[],int maxn,int m)//大数乘法
{
	int c=0;//进位
	int k;
	for(k=maxn-1;k>=0;k--)
	{
		int x=m*s[k]+c;
		s[k]=x%10;
		c=x/10;
	}
}

void ds_chu(int s[],int  maxn,int m)//大数除法
{
	int t=0;//退位,余数
	int k;
	for (k=0;k<=maxn-1;k++)
	{
		int x=t*10+s[k];
		s[k]=x/m;
		t=x%m;
	}
}

int main()
{
	int n;
	while(scanf("%d",&n)&&n!=-1)
	{
		int s[maxn]={0};
		//memset(s,0,sizeof(s));
		s[maxn-1]=1;
		int i,j;
		for (i=n+1;i<=2*n;i++)
		{
			ds_cheng(s,maxn,i);
		}
		for (i=1;i<=n;i++)
		{
			ds_chu(s,maxn,i);
		}
		ds_chu(s,maxn,n+1);
		for (j=0;j<=maxn-1;j++)
			if(s[j]!=0)
				break;
		for (i=j;i<=maxn-1;i++)
			printf("%d",s[i]);
		cout<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42173572/article/details/82182191
今日推荐