您的位置:首页 > 其它

Catalan数(高精版)

2015-10-18 20:00 239 查看
权当打模板了。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct bignum
{
int len,a[1005];
bignum()
{
len=1;
memset(a,0,sizeof(a));
}
bignum operator * (int num)
{
int jinwei=0;
len++;
for (int i=1;i<=len;++i)
{
a[i]*=num;
a[i]+=jinwei;
jinwei=a[i]/10000;
a[i]%=10000;
}
while (a[len]!=0)
len++;
len--;
return *this;
}
bignum operator / (int num)
{
bignum c=*this;
int jiewei=0;
for (int i=len;i>=1;--i)
{
jiewei=jiewei*10000+a[i];
c.a[i]=jiewei/num;
jiewei%=num;
}
while (c.a[c.len]==0)
c.len--;
return c;
}
};

int n;

bignum C(int a,int b)
{
bignum ans;
ans.a[1]=1;
for (int i=a-b+1;i<=a;++i)
ans=ans*i;
for (int i=2;i<=b;++i)
ans=ans/i;
return ans;
}

void print(bignum c)
{
printf("%d",c.a[c.len]);
for (int i=c.len-1;i>=1;--i)
printf("%04d",c.a[i]);
}

int main()
{
scanf("%d",&n);
print(C(2*n,n)/(n+1));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  卡特兰数