题目描述

N个盒子排成一行(1<=N<=20)。你有A个红球和B个蓝球。0 <= A <= 15, 0 <= B <= 15。球除了颜色没有任何区别。你可以将球放进盒子。一个盒子可以同时放进两种球,也可以只放一种,也可以空着。球不必全部放入盒子中。编程计算有多少种放置球的方法。

输入

一行,N,A,B,用空格分开。

输出

一行,输出放置方案总数。

样例输入

Copy (如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)

2 1 1

样例输出

9
分析:

主要是想通过这道题整理一下组合数学的一些基本概念。
题目说球不必全部放入盒子中,我们先假定它要全部放进去,这时应该怎么算呢?
先考虑红球,A个红球放进N个盒子里,因为盒子是排成一行的,即盒子是有顺序的,所以我们可以设:
第一个盒子放x1个.....第n个盒子放xn个,即有:x1+x2+...+xn=A。
显然,我们需要把A拆成N份,但是每份可以为空,所以我们把每个x都加上一,即转化为:
(x1+1)+(x2+1)+....+(xn+1)=A+N。
这时候就简单了,把A+N分成N份,每份不能为空,这时候就用隔板法。
如图,在A+N-1个空中选N-1个放隔板:C(a+n-1,n-1).
但这是球必须放完的情况,那么想,如果球不放完,我们加一个盒子,把剩下的球放到第N+1个盒子中,是不是就是C(a+n,n)了呢?
至此,求出放A的方案和放B的方案,两者相乘,即为答案。
那么我又想bibi两句了,若何求C(n,k)呢?若是直接用n!/k!(k-n)!,肯定要炸,所以要边乘边除,
即:for(int i=1;i<=k;i++,n--) 
s=s*n/i;
为什么要这么写,而不是s*n/k呢,因为这样可能出现除不尽的情况,但是为何那样写就可以除尽呢?
因为连续的n个正整数的乘积一定能被n!整除
证明:设a为非负数,
则n个正整数的乘积可表示为(a+1)(a+2)....(a+n) = (a+n)! / a! = (a+n)!/(a!n!) * n! 
因为(a+n)!/a!n! = C(a+n,a)
所以(a+1)....(a+n)/n! = C(a+n,a),而C(a+n,a)一定为正整数,证毕。

题解至此,可以上代码了吧。

#include<iostream>
using namespace std;
#define LL unsigned long long
int n,a,b;
int main()
{cin>>n>>a>>b;LL s=1,s0=1;for(int i=1,j=n+a;i<=a;i++,j--)s=s*j/i;for(int i=1,j=n+b;i<=b;i++,j--)s0=s0*j/i;cout<<s*s0;
}

【组合数学】 放小球之隔板法相关推荐

  1. 组合数学之隔板法:多元一次方程组解的统计

    1. 内容 讨论多元一次不定方程: x 1 + x 2 + . . . + x d = t x_1 + x_2 + ... + x_d = t x1​+x2​+...+xd​=t有解的情况 隔板法求解 ...

  2. 比武招亲(上)(思维+贡献法+组合数学隔板法详解)

    https://ac.nowcoder.com/acm/contest/9985/B 思路: 首先贡献法考虑每个数作为最大值出现的次数和最小值出现的次数. 那么最终答案其实是xi作为最大数-xj作为最 ...

  3. ICPC 2018 焦作赛区网络预赛G Give Candies 组合数学隔板法+欧拉降幂

    G Give Candies 计蒜客 G Give Candies 题意 n n n个糖果, n n n个人从 1 1 1~ n n n编号,每次给一个人发糖可以发任意数量但不能小于 1 1 1,直到 ...

  4. sql相同顺序法和一次封锁法_数学专题 | Ep01 隔板法的妙用

    数学专题(一)  隔板法的妙用 浓度常见哪些问题? 排列组合分堆?涂色?到底掌握透彻了吗? 解析几何与韦达定理? 公式总是记不住?应用题还不会解? 除了写作(写作听我的).逻辑(逻辑说)专题外,本周起 ...

  5. 高中数学基础05:排列、组合以及隔板法

    内容来自百度百科知识以及东方耀老师笔记内容的整合 1.排列组合基本概述 排列组合是组合学最基本的概念.所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序.组合则是指从给定个数的元素中仅仅取出 ...

  6. 4002 构造数组(可重复组合数问题--隔板法)

    1. 问题描述: 现在需要构造一对数组 (a,b),要求: 数组 a 和数组 b 的长度都为 m: 两个数组中的元素的取值范围都是 [1,n]: ∀i∈[1,m],ai ≤ bi: 数组 a 中元素非 ...

  7. 隔板法详解(各种方法)

    理解隔板法 [定义] 隔板法就是在n个元素间的(n-1)个空中插入k个板,可以把n个元素分成k+1组的方法. 应用隔板法必须满足3个条件:    (1) 这n个元素必须互不相异:  (2) 所分成的每 ...

  8. 隔板法详解(各种方法)(转载)

    原文链接 理解隔板法 [定义] 隔板法就是在 n 个元素间的(n-1)个空中插入 k 个板,可以把 n 个元素分成 k+1 组的方法. 应用隔板法必须满足 3 个条件: (1) 这 n 个元素必须互不 ...

  9. 算法 - 数学 - 组合数 - 隔板法求组合数

    一.求组合数 二.隔板法 隔板法是組合數學的方法,用來處理n個無差別的球放進k個不同的盒子的問題.可一般化為求不定方程的解數,並利用母函數解決問題. 隔板法與插空法的原理一樣. 应用隔板法必须满足3个 ...

  10. 排列组合---隔板法

    1.定义 隔板法就是在n个元素间插入(b-1)个板,即把n个元素分成b组的方法.C(n-1,b-1) 2.条件 隔板法必须满足三个条件: (1)这n个元素必须相同,(2)所分成的每一组至少分得一个元素 ...

最新文章

  1. Autodesk Cloud Accelerator Program 开始报名
  2. 实例分析JAVA CLASS的文件结构
  3. couchbase_Spring Data Couchbase 1.0 GA发布
  4. 如何使用JSON和Servlet创建JQuery DataTable
  5. 关于c#中全局类变量的建立
  6. python多线程基本操作
  7. 卢克增加服务器,DNF卢克攻坚服务器优化:增加攻坚队频道,新跨区整合计划
  8. 定义空列表元素类型_【Python+Excel】做数据分析5--列表和元组读取和常用查询
  9. 【MySQL】事务隔离级别
  10. bind函数返回值-1_javascript函数柯里化
  11. python re 模块
  12. 人脸方向学习(六):Face Recognition-Center Loss 解读
  13. [51nod1232]完美数
  14. cousera视频无法播放
  15. 快速预警、高效疏通,ZBOX打造高速公路智慧通信站
  16. java发送邮件连接超时,Java邮件超时和连接超时处理
  17. JavaScript Eval Encode/Decode JavaScript Eval 在线加密/解密, 编码/解码工具
  18. 机器学习中文资源合集
  19. 118 以太坊 ethereum hardhat :编译 artifacts
  20. HTML CSS之复合选择器中的交集选择器、并集选择器、后代选择器、子元素选择器、相邻兄弟选择器、属性选择器

热门文章

  1. (SQL)使用Excel连接数据库
  2. java 浏览器设置字体大小_css 字体设置(不同浏览器设置效果)
  3. android中jni的调用过程,Android中JNI的调用生成头文件步骤
  4. 基于ATmega16单片机 程控滤波器程序源代码
  5. 华三服务器管理口地址_H3C服务器配置HDM远程管理系统
  6. javaSE(完整版)
  7. raytrace 算法理论与实践
  8. BeanShell用法笔记
  9. 算法设计与分析(期末复习重点)更新中
  10. 什么是网络操作系统?网络操作系统具有那些基本功能?