hdu 1023 Train Problem II 这题运用到大数相乘+大数相除+卡特兰
发布时间:2020-12-14 02:40:17 所属栏目:大数据 来源:网络整理
导读:Train Problem II Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6454????Accepted Submission(s): 3514 Problem Description As we all know the Train Problem I,the boss of the Ignatius
Train Problem IITime Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6454????Accepted Submission(s): 3514
Problem Description
As we all know the Train Problem I,the boss of the Ignatius Train Station want to know if all the trains come in strict-increasing order,how many orders that all the trains can get out of the railway.
?
Input
The input contains several test cases. Each test cases consists of a number N(1<=N<=100). The input is terminated by the end of file.
?
Output
For each test case,you should output how many ways that all the trains can get out of the railway.
?
Sample Input
?
Sample Output
?
卡特兰数:百度百科
代码:
#include <stdio.h>
int cat[110][100] ;
int main()
{
int n ;
cat[0][0] = cat[1][0] = 1 ;
cat[0][1] = cat[1][1] = 1 ;
for(int i = 2 ; i <= 100 ; ++i)
{
for(int j = 1 ; j <= cat[i-1][0] ; ++j)
{
cat[i][j] = cat[i-1][j]*(4*i-2) ;
}
int temp = 0,len = 1;
for(len = 1 ; len <= cat[i-1][0] ; ++len)
{
cat[i][len] += temp ;
temp = cat[i][len]/10 ;
cat[i][len] %= 10 ;
}
while(temp != 0)
{
cat[i][len++] += temp%10 ;
temp /= 10 ;
}
for(int j = len-1,r = 0; j > 0 ; --j)
{
temp = r*10+cat[i][j] ;
r = temp%(i+1) ;
cat[i][j] = temp/(i+1) ;
}
while(cat[i][len] == 0)
{
--len ;
}
cat[i][0] = len ;
}
while(~scanf("%d",&n))
{
for(int i = cat[n][0] ; i > 0 ; --i)
printf("%d",cat[n][i]) ;
puts("") ;
}
return 0 ;
}
与君共勉 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
