微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hdu 1134(大数+卡特兰数——Game of Connections)

题目大意:输入一个整数n,用2n个数围成一个圆圈。然后用n条直线练成n对数(连线不能相交),求有多少种连法?


解题思路:大数+卡特兰数

1)

an =C(2n,n)/(n+1)=(4n-2)*(an-1)/(n+1)


代码如下:

package com.njupt.acm;

import java.math.BigInteger;
import java.util.Scanner;

public class HDU_1134 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(system.in);
		
		BigInteger one = new BigInteger("1");
		BigInteger two = new BigInteger("2");
		BigInteger four = new BigInteger("4");
		
		
		while(scanner.hasNextInt()){
			int n = scanner.nextInt();
			BigInteger catalan = one;
			BigInteger N;
			if(n == -1){
				break;
			}
			if( n == 1 ){
				System.out.println("1");
				continue;
			}
			
			for(int i = 1 ; i <= n ; ++i){
				N = new BigInteger(String.valueOf(i));
				catalan = catalan.multiply(four.multiply(N).subtract(two)).divide(N.add(one));
			}
			
			System.out.println(catalan);
		}
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐