题目描述:http://115.28.203.224/problem.php?cid=1011&pid=6
题目描述
有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。售票员没有零钱,问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个拿一元零钱的小孩,他们的位置互换,也算是一种新的排法。(M<=10)
输入
输入一行,M,N,K(其中M=N+K,M<=10)。
输出
输出一行,总的排队方案。
样例输入
4 2 2
样例输出
8
代码
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 int m, n, k, i, s = 1, t = 1, q = 1, t1 = 1, q1 = 1; 7 cin>>m>>n>>k; 8 for(i = 1; i <= m; i++) 9 s *= i; 10 for(i = 1; i <= n; i++) 11 t *= i; 12 for(i = 1; i <= m-n; i++) 13 q *= i; 14 for(i = 1; i <= m-n-1; i++) 15 q1 *= i; 16 for(i = 1; i <= n+1; i++) 17 t1 *= i; 18 cout<<((s/(q*t)-s/(q1*t1))*t*q)<<endl; 19 return 0; 20 }