题意:
有n个男生,m个女生分组,一个组t个人,一组至少包含4个男生和1个女生,每个男生或者女生都是不一样的个体,问一共可以构成几
组?
输入:
5 2 5
4 3 5
输出:
10
3
分析:
典型的排列组合问题,分组数=男生分组数 * 女生分组数=(Cn4+Cn5+...Cnn-i)+(Cn1+....Cnn-i)。
代码:
#include <bits/stdc++.h>
using namespace std;
long long fun(long long a, long long b) //a男孩女孩数,b是一组需要男或女的人数
{
long long num=1, i;
for(i=1; i<=b; i++)
{
num*=a-i+1;
num /=i; //组合数A54/4!
}
return num;
}
int main()
{
long long n,b,g,i;
while(~scanf("%lld%lld%lld",&b,&g,&n))
{
long long num=0;
for(i=4; i<n; i++)
num+= fun(b,i)*fun(g, n-i); //男孩情况*女孩情况
cout<<num <<endl;
}
return 0;
}