CodeForces 131C--组合数
2016-07-18 09:32
369 查看
题意:
有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;
}
有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;
}
相关文章推荐
- 利用函数返回oracle对象表的三种方法
- 线性布局
- js中变量类型判断
- iOS开发-javaScript交互
- [JQ权威指南]$.ajax()方法发送请
- spring源码分析之定时任务Scheduled注解
- 远程办公
- sql连接查询
- 整数中1出现的次数(从1到n整数中1出现的次数) java
- Yii2简单实现给表单添加验证码的方法
- 【记录】dd
- Django's URL Configuration String View in 1.10+
- org.apache.poi.hssf.usermodel.HSSFWorkbook和org.apache.poi.xssf.usermodel.XSSFWorkbook的区别
- jQuery图片放大
- hashmap的几个重要函数
- bash 实现多线程执行多个命令
- 西邮linux兴趣小组暑假留校安排计划
- Maximum_subarray_problem
- Maximum_subarray_problem
- dashGap不起作用,没有间隙,始终是实线。