1247: 球迷购票问题
来源:互联网 发布:管家婆的数据在哪里面 编辑:程序博客网 时间:2024/06/09 20:57
<h2>描述</h2>
球赛门票的售票处规定每位购票者限购一张门票,且每张门票售价50元。购票者中有m位手持50元钱币,另有n人手持100元。假设售票处开始售票时无零钱。问这m+n人有几种排队方式可使售票处不致出现找不出钱的局面。
<!--more-->
对给定的m,n(0<=m,n<=5000),计算出排队方式总数。输入数据第1行为测试数据的个数t,余下的t行每行有两个整数m和n。对每一组测试数据输出方案数。
<h2>Example Input</h2>
<pre>3
3 2
2 0
1 1</pre>
<h2>Example Output</h2>
<pre>5
1
1</pre>
<pre>这道题我是无解了 通过递归肯定死啊 高精度问题 最后康哥出马搞定 先贴出来 占位</pre>
<pre>#include <stdio.h>
#include <math.h>
int a[100005];
void output(int x);
void process(int m, int n) /////(m-n+1)/(m+1)C(m+n,m)
{
int mm=m+n;
int x=(int)log(mm)*mm/15+2;
int i,j,k,sign;
a[0]=m-n+1;
for(i=1;i<x;i++)
a[i]=0;
while(mm>n)
{
sign=0;
for(i=0;i<x;i++)
{
k=a[i]*mm+sign;
a[i]=k%100000;
sign=k/100000;
}
mm--;
}
m++;
while(m>1)
{
sign=0;
for(i=x;i>=0;i--)
{
k=sign*100000+a[i];
a[i]=k/m;
sign=k%m;
}
m--;
}
output(x);
}
void output(int x)
{
int i,j;
for(i=x;i>=0;i--)
{
if(a[i]!=0)
break;
}
printf("%d",a[i]);
i--;
for(;i>=0;i--)
{
if(a[i]<=9)
printf("0000%d",a[i]);
else if(a[i]<=99)
printf("000%d",a[i]);
else if(a[i]<=999)
printf("00%d",a[i]);
else if(a[i]<=9999)
printf("0%d",a[i]);
else
printf("%d",a[i]);
}
printf("/n");
}
int main(void)
{
int m,n,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
if(m<n)
printf("0/n");
else if(n==0)
printf("1/n");
else
process(m,n);
}
return 0;
}</pre>
- 1247: 球迷购票问题
- 洛谷1754 球迷购票问题
- [DP] Luogu1754 球迷购票问题
- 火车票购票问题1
- 火车票购票问题2
- 购票
- 购票找零问题(5角,一元)
- 【蓝桥第三周】排队购票问题
- 火车购票问题(2016CCF)
- 排队购票问题分析与解决
- 老北京球迷
- 我不是球迷
- linux下firefox登录12306购票网站的证书问题
- 分治法的应用-排队购票,餐盘放苹果问题
- 【C语言版】CCF火车购票问题(201609-2)
- 辽宁解释票务问题:退票涨价打击黄牛 真心为球迷
- 我是伪球迷
- 准备当球迷
- C#控件系类
- typedef
- 2009-07-24 TIPTOP
- 上市公司股东组
- const和static的使用(转)
- 1247: 球迷购票问题
- 钩子详解
- 点击CRichEdit ctrl 后如何获得当前点击位置
- 第一篇
- jdbc 如何与 sql server 2000连接
- Endnote与NoteExpress题录转换
- 2009-07-27 TIPTOP
- java配置中关于PATH, CLASSPATH, JAVA_HOME 作用
- 第十三章:问题1