题目链接:http://acm.hdu.edu.cn/showproblem.php?

pid=1133

【题意】

电影票50块一张

有m个人手里正好有50块,n个人手里正好有100块,售票厅開始没有钱。问,有多少种排队的方式,能够让每一个人都买上票。

(假设售票厅没有50块零钱,则持有100块的人买不了票)

【分析】

显然。当m<n的时候,有0种排列方式。

当m>=n的时候:

用0。代表手里仅仅有50块的人,1,代表手里仅仅有100块的。

则0110100 这样的情况不能满足条件(到第三个人就买不了)

我们把包含第三个人及他之前的人 翻转 (1->0,  0->1)

1000100 出现了这个序列;

0110100   有 4个0,3个1   
1000100  有5个0 ,2个1

每个不能满足的情况都相应这样一个序列 所以 不能满足的条件的情况共同拥有

C(m+1,m+n);

我们计算公式就是:合法的排列方式=全部排列方式-非法排列方式

于是就有了F(N)=(-)*m!*n! 

然后再化简一下;

F(N) =(m+n)!

*(m-n+1)/(m+1)。

由于数据过大,所以用了JAVA大数来解决

【代码】

import java.util.*;
import java.math.BigInteger;
public class Main{
public static void main(String[] args){
int a,b;
Scanner in=new Scanner(System.in);
int cnt=0;
while(in.hasNext()){
cnt++;
a=in.nextInt();
b=in.nextInt();
BigInteger ans=BigInteger.ONE;
if(a==0&&b==0)break;
if(a<b) ans=BigInteger.ZERO;
else {
for(int i=1;i<=a+b;i++){
ans=ans.multiply(BigInteger.valueOf(i));
}
int mpl=(a-b+1);
int dvd=(a+1);
ans=ans.multiply(BigInteger.valueOf(mpl));
ans=ans.divide(BigInteger.valueOf(dvd));
}
System.out.println("Test #"+cnt+":");
System.out.println(ans);
}
}
}

hdu1133 Buy the Ticket (卡兰特数应用+java大数)的更多相关文章

  1. HDU1133 Buy the Ticket —— 卡特兰数

    题目链接:https://vjudge.net/problem/HDU-1133 Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Me ...

  2. 【HDU 1133】 Buy the Ticket (卡特兰数)

    Buy the Ticket Problem Description The "Harry Potter and the Goblet of Fire" will be on sh ...

  3. Buy the Ticket(卡特兰数+递推高精度)

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  4. HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)

    Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...

  5. Buy the Ticket HDU 1133 卡特兰数应用+Java大数

    Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...

  6. 【高精度练习+卡特兰数】【Uva1133】Buy the Ticket

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  7. Buy the Ticket{HDU1133}

    Buy the TicketTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. HDUOJ---1133(卡特兰数扩展)Buy the Ticket

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  9. hdu 1133 Buy the Ticket(Catalan)

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

随机推荐

  1. Openjudge-4151-电影节

    这个题是一道贪心的题目,我们要想看的电影数目最多,我们肯定每次都要选最早结束的电影,这样我们才能去看下一部电影. 它本身最早结束,如果同时开始,那肯定是它的放映时间比较短,如果它后开始,先结束,那它的 ...

  2. 用户管理命令--passwd,usermod,userdel

    用户修改密码命令--passwd 当修改用户的密码时,也要分普通用户和超级用户两种情况 普通用户:修改密码前需要先输入当前密码,确认是否正确 密码设置不可以过于简单 超级用户:权利非常的大,可以设置任 ...

  3. (2) OpenSSL命令

    openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行 ...

  4. Go:sync.Once 实现单例模式

    代码: package main import ( "fmt" "sync" ) type Singleton struct{} var singleton * ...

  5. rails使用bootstrap

    在Gemfile文件中添加'bootstrap-sass',再运行bundle install gem 'bootstrap-sass' 在config/application.rb添加一行代码,让b ...

  6. luogu2633 Count on a tree

    主席树放到树上而已 #include <algorithm> #include <iostream> #include <cstdio> using namespa ...

  7. asp.net mvc数据验证

    文章:asp.net mvc3 的数据验证(一) 文章:ASP.NET MVC下的四种验证编程方式 这个讲了在一个地方展示验证信息 文章:[ASP.NET MVC系列]浅谈数据注解和验证 这个在每个输 ...

  8. HDU-3746Cyclic Nacklace,next数组简单应用。

    Cyclic Nacklace 节省篇幅不粘题面了... 看懂题后脑袋里略过KMP,学过但没怎么用过,又直接跳下一题了.. 题意:给定一个字符串,可以从两边加上一些字符使其有循环节..求最少需要加多少 ...

  9. HDU 2222 最简单的AC自动机套模板应用

    HDU 2222 题意:给出N(N<=10,000)个单词,每个单词长度不超过50.再给出一个字符串S,字符串长度不超过1,000,000.问有多少个单词出现在了字符串S中.(单词可能重复,单词 ...

  10. [CodePlus2017]晨跑

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 166  Solved: 125 Description "无体育,不清华".&qu ...