hdu 2067 卡特兰数防止溢出计算方法
来源:互联网 发布:无线游戏鼠标推荐知乎 编辑:程序博客网 时间:2024/06/06 11:21
卡特兰数
C(n) = 1 /(n-1)*C(2*n,n)
递推公式为
C(n)=(4*n - 2)/( n - 1 ) *C(n-1) 若用递推公式,会在32的时候溢出
下面的代码用的是dp的思想
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;long long c[50][50];int main(){ int cases=1; for(int i=0;i<=35;i++) c[0][i]=1; for(int i=1;i<=35;i++){ for(int j=i;j<=35;j++){ if(i==j) c[i][j]=c[i-1][j]; else c[i][j]=c[i-1][j]+c[i][j-1];///定点数值等于对角线两数之和 } } int n; freopen("in.txt","r",stdin); while(scanf("%d",&n),n>0) printf("%d %d %lld\n",cases++,n,2*c[n][n]); return 0;}
import java.math.BigInteger;import java.util.Scanner;public class Main{ public static void main(String[] args) { Scanner cin=new Scanner(System.in); int times,j,l; BigInteger []k=new BigInteger[107]; k[0]=BigInteger.valueOf(1); for(j=1;j<=100;j++) { k[j]=BigInteger.valueOf(0); for (l=0;l<=j-1;l++) { k[j]=k[j].add(k[l].multiply(k[j-1-l])); } } while (cin.hasNext()) { times=cin.nextInt(); if(times!=-1) System.out.println(k[times]); else break; } }}
阅读全文
0 0
- hdu 2067 卡特兰数防止溢出计算方法
- 卡特兰数的两种计算方法
- HDU 1023 卡特兰数
- HDU 3723卡特兰数
- HDU 1133 卡特兰数
- hdu 3723 卡特兰数
- hdu 5184 卡特兰数
- hdu 1023 卡特兰数
- HDU 4828 (卡特兰数)
- hdu 1023 卡特兰数
- 卡特兰数 hdu 5673
- 卡特兰数 Catalan数 hdu 1023
- hdu 1130 卡特兰数加大数
- HDU 2067 小兔的棋盘【卡特兰数】
- hdu 2067 小兔的棋盘(卡特兰数)
- hdu 2067 小兔的棋盘 卡特兰数+java
- 【卡特兰数】hdu 2067 小兔的棋盘
- HDU 2067 小兔的棋盘-卡特兰数
- 谁先击完40下鼠标
- JUnit创建套件测试
- java内部类
- TIFF文件处理
- 你知道吗?Linux其实无所不在!
- hdu 2067 卡特兰数防止溢出计算方法
- java后台HttpClient调用http接口实例
- etcd rest api基本操作
- NodeJS调试工具 — node-inspector
- 矩阵乘法的本质是什么?
- Java导入excel大量数据出现内存溢出解决方案
- iOS 常见错误之 _dns_parse_resource_record", referenced from:解决方法
- 大数据分布式集群搭建(4)
- java实现数据结构练习题--仅使用处理单个数字的I/O例程,编写一个过程以输出任意实数(可以是负的)