卡特兰数的应用点击打开链接
1.
#include <stdio.h>
void fun(__int64 h[])
{
int i,j;
h[0]=1;h[1]=1;
for(i=2;i<=35;i++)
{
for(j=0;i-j-1>=0;j++)
{
h[i]+=h[j]*h[i-j-1] ;
}
}
}
int main()
{
int n;int count=0;__int64 h[50]={0};
fun(h);
while(scanf("%d",&n)&&n!=-1)
{
printf("%d %d %I64d\n",++count,n,h[n]*2);
}
return 0;
}
2.
#include<stdio.h>
#include<stdlib.h>
int main(void){
int i,n,k=1;
long long a[36]={1,1};
for(i=2;i<=36;i++)a[i]=a[i-1]*(4*i-2)/(i+1);
while(scanf("%d",&n)!=EOF&&n!=-1){
printf("%d %d %I64d\n",k,n,2*a[n]);
k++;
}
return 0;
}
1能够AC,而2不行。由于a【i】*(4*i-2)这个数太大,即使long long也会溢出。虽然原理和输出都对。