
Train Problem II(卡特兰数+大数乘除)
发布日期:2021-05-16 12:21:44
浏览次数:24
分类:精选文章
本文共 1689 字,大约阅读时间需要 5 分钟。
Train Problem II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7539 Accepted Submission(s): 4062
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
12310
Sample Output
12516796
Hint
The result will be very large, so you may not process it by 32-bit integers. 题解:卡特兰数:h( n ) = ( ( 4*n-2 )/( n+1 )*h( n-1 ) );也可以用java,h(n)= h(0)*h(n-1) + h(1)*h(n-2) + + h(n-1)h(0) (其中n>=2);
这里用的大数;
代码:
#include#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;#define mem(x,y) memset(x,y,sizeof(x))#define SI(x) scanf("%d",&x)#define PI(x) printf("%d",x)int N;//h( n ) = ( ( 4*n-2 )/( n+1 )*h( n-1 ) );int ans[110][110];void db(){ ans[0][0]=1; ans[0][1]=1; ans[1][0]=1; ans[1][1]=1; int len=1,yu=0; for(int i=2;i<=100;i++){ for(int j=1;j<=len;j++){ int t=ans[i-1][j]*(4*i-2)+yu; yu=t/10; ans[i][j]=t%10; } while(yu){ ans[i][++len]=yu%10; yu/=10; } for(int j=len;j>=1;j--){ int t=ans[i][j]+yu*10; ans[i][j]=t/(i+1); yu=t%(i+1); } while(!ans[i][len])len--; ans[i][0]=len; }}int main(){ mem(ans,0); db(); while(~SI(N)){ for(int i=ans[N][0];i>=1;i--)printf("%d",ans[N][i]); puts(""); } return 0;}
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月29日 06时51分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux根文件系统详解
2023-02-04
linux系统如何实现内网穿透、外网访问
2023-02-05
linux系统如何实现内网穿透、外网访问
2023-02-05
linux系统常用监控系统状态信息命令
2023-02-05
Linux系统数据实时备份工具
2023-02-05
Linux系统用户和权限管理
2023-02-05
linux系统监控与硬盘分区/格式化/文件系统管理
2023-02-05
Linux系统调用分析
2023-02-05
linux线程同步的含义,Linux线程同步——条件变量
2023-02-05
Linux经常使用命令(十一) - more
2023-02-05
linux缓存nscd
2023-02-05
LINUX编程实战指发送UDP消息
2023-02-05
Linux网络命令大全,收藏不迷路!
2023-02-05
Linux网络基础命令
2023-02-05
linux网络编程概念(一)
2023-02-05
Linux网络配置与故障排除
2023-02-05
Linux虚拟机上安装redis
2023-02-05
Linux设备驱动开发学习(4):字符设备驱动(未完)
2023-02-05
Linux路径格式与Window路径格式的转换(附Python代码)
2023-02-05