How Many Trees? HDU 1130

How Many Trees?

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4501    Accepted Submission(s): 2513


 

Problem Description

A binary search tree is a binary tree with root k such that any node v reachable from its left has label (v)

 

 

Input

The input will contain a number 1 <= i <= 100 per line representing the number of elements of the set.

 

 

Output

You have to print a line in the output for each entry with the answer to the previous question.

 

 

Sample Input

 

1 2 3

 

 

Sample Output

 

1 2 5

 

给n个结点,能形成多少颗二叉树

卡特兰数-高精度

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define N 110
int n,len,ans,sum,we,a[N][N],b[N];
int catelan()
{
    len=1; 
	a[1][0]=b[1]=1;
    for(int i=2;i<110;i++)
    {
        for(int j=0;j=0;j--)
        {
            we=sum*10+a[i][j];
            a[i][j]=we/(i+1);
            sum=we%(i+1);
        }
        while(!a[i][len-1])
         len--;
        b[i]=len;
    }
}
int main()
{
    catelan();
    while(~scanf("%d",&n))
    {
        for(int i=b[n]-1;i>=0;i--)
         printf("%d",a[n][i]);
        printf("\n");
    }
    return 0;
}

 

你可能感兴趣的:(数学类)