售票问题 ID1656

题目描述

售票处有2n(n<=1000)张票出售,每张票价a元,每人限购一张票。一开始售票处没有钱。而排队购票的前2n人中,正好有n个人持有a元,另n个人持有2a元钱。要让售票处不发生找钱困难,这2n个人有多少种不同的排队方法。

输入格式:

n

输出格式:

排队方案总数(不超过700位)

样例输入:

3

样例输出:

5

时间限制:

1000

空间限制:

262144

提示:

说明:设持a元的人为A,持2a元的人为B,则5种方案为

AAABBB
AABABB
AABBAB
ABAABB
ABABAB

这题题意很简单,用公式 : ans=ans×(2×n-i)÷(i+1) ,输出ans,即OK
但是,这题得用高精度[spoiler]忒坑了,第一次没用只得30分 :sob: :innocent:/spoiler]
相信大家都会写高精吧

for(int i=0;i<n;i++){
     //ans=ans*(2*n-i)/(i+1);
     ans=mult(ans,2*n-i);//高精度乘法(高精乘低精)
     ans=div(ans,i+1);//高精度除法(高精除低精)
  }
  ans=C(ans,n+1);

这不是提高组的吧

oh,那是普及组,对吧?

@向耕立 寄基础吧,高精度是基础的

不是,这其中有卡特兰数列(排列组合),基础不太合适吧

@向耕立 哎呀卡特兰属很简单的,算了你想普及就普及吧

666