盒子放球问题
来源:互联网 发布:php登录简单页面代码 编辑:程序博客网 时间:2024/06/02 10:51
k个相同的球放进n个不同的盒子,求有多少种放法。
输入:
3 4
1 4
输出:
15
1
首先介绍插板法:(字数比较多,直接从网上一篇文章上截图)
也就是说,至少每个盒子一个球的时候,把k个相同的球放进n个不同的盒子,公式为C(k-1,n-1)。
这道题的公式可以从插板法推导出来。
对比题目发现插板法和这道题的区别在于并不是每个盒子都至少有一个球的。那么我们可以假设,每个盒子内已经有了一个球,然后我们把每个盒子里的球拿出来(共有n个球)加进总的球个数(k个球)中,问题变转化成了,把k+n个相同的球放进n个不同的盒子里,每个盒子至少有一个球,求多少种不同的放法。这时候我们就可以使用插板法来求解。
公式为C(n+k-1,n-1)=C(n+k-1,k),代码如下所示:
#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<queue>#include<map>using namespace std;int C(int n,int r){ int i,j,s=1; if(n-r<r)r=n-r; for(i=0,j=1;i<r;i++){ s*=(n-i); while(j<=r&&s%j==0) s/=j,j++; } return s;}int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF) printf("%d\n",C(n+k-1,k)); return 0;}
0 0
- 盒子放球问题
- uva10943(球放盒子问题)
- 放盒子
- [NOIP2017模拟]放盒子
- 放球问题
- 【证明】放球问题
- 放球问题
- 放球问题的研究
- CodeForces 342C--矩形盒子能最多放多少个球
- 球和盒子的组合数学问题
- 盒子与球问题的探讨
- N个小球放M个盒子
- 鼠标放上去盒子向上滑动
- NOIP模拟(10.19)T3 放盒子
- NOIP模拟 放盒子【费用流】
- 盒子中的margin问题
- 【刷题】移动盒子问题
- DIV盒子居中问题
- android 根据证书生成对应的签名文件
- iOS 发送的位置能调用本机地图导航资料整理
- hbase-site.xml 和 hbase-default.xml
- 结构体强转联合体笔记
- Android Socket通信
- 盒子放球问题
- 数据结构关于AOV与AOE网的区别
- Python文件的存取
- MySQL 5.7.13-winx64.zip安装笔记
- AMD和CMD的"同步"加载方式原理
- 【Python学习笔记】IO编程:操作文件和目录
- PHP SPL标准库之SplStack简介
- 当当网页面
- 除去ScrollView拉到尽头时再拉的阴影效果