首页 > 代码库 > HDU 1133 Buy the Ticket 卡特兰数
HDU 1133 Buy the Ticket 卡特兰数
设50元的人为+1 100元的人为-1 满足前任意k个人的和大于等于0 卡特兰数
C(n+m, m)-C(n+m, m+1)*n!*m!
import java.math.*; import java.util.*; public class Main { /** * @param args */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int cas = 1; while(true){ int m = sc.nextInt(); int n = sc.nextInt(); if(m == 0 && n == 0) break; System.out.println("Test #"+cas+":"); cas++; if(m < n){ System.out.println(0); continue; } BigInteger ans1 = BigInteger.valueOf(1); int x = n+m; for(int i = 1; i <= m; i++){ ans1 = ans1.multiply(BigInteger.valueOf(x)); x--; } for(int i = 1; i <= n; i++){ ans1 = ans1.multiply(BigInteger.valueOf(i)); } BigInteger ans2 = BigInteger.valueOf(1); x = n+m; for(int i = 1; i <= m+1; i++){ ans2 = ans2.multiply(BigInteger.valueOf(x)); x--; ans2 = ans2.divide(BigInteger.valueOf(i)); } for(int i = 1; i <= n; i++){ ans2 = ans2.multiply(BigInteger.valueOf(i)); } for(int i = 1; i <= m; i++){ ans2 = ans2.multiply(BigInteger.valueOf(i)); } System.out.println(ans1.subtract(ans2)); } } }
HDU 1133 Buy the Ticket 卡特兰数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。