[2011山东ACM省赛] Binomial Coeffcients(求组合数)
Binomial Coeffcients
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描写叙述

输入

输出

演示样例输入
- 3
- 1 1
- 10 2
- 954 723
演示样例输出
- 1
- 45
- 3557658
提示
来源
解题思路:
这道题坑死我了。
。本来非常easy的一道题。却怎么也做不正确。。
就是求组合数。结果对10000003取模。一開始对c(m,n)是用公式直接求的。可是计算过程中涉及到取余,不能用下面代码写:
- int c(int m,int n)
- {
- int sum=1;
- for(int i=1;i<=n;i++)
- {
- sum=sum*(m--)/i;
- sum%=mod;
- }
- return sum;
- }
这个代码是错误的。
比方 C(9,3)对5取余 上面的代码 的计算过程是这种 sum=sum*9/1 sum=9 sum%5=4 4*8/2=16 16%5=1 1*7/3 =?这下问题出来了把。
不能整除。这个计算过程中不能进行取模运算,可是直接算又越界。后来又想到求组合数分子分母进行约分以后再计算。測试数据对,可是可怜的超时。
哎。。因此仅仅能用组合递推得来算,由于每递推到一个数,假设它大于mod,就取模,这种一个组合式是正确的,由于题意就这样说得。因此由递推得到的每个组合式都是正确的,并且不会越界。
另外须要注意的是: c[0][0]=1 这个题少了这一句就WA
代码:
- #include <iostream>
- #include <string.h>
- using namespace std;
- const int mod=10000003;
- const int N=1002;
- int c[N][N];
- void init()//递推打表
- {
- memset(c,0,sizeof(c));
- c[0][0]=c[1][0]=c[1][1]=1;
- for(int i=2;i<N;i++)
- {
- c[i][i]=c[i][0]=1;
- for(int j=0;j<i;j++)
- {
- c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;//不会越界
- }
- }
- }
- int main()
- {
- init();
- int k;cin>>k;
- int a,b;
- while(k--)
- {
- cin>>a>>b;
- cout<<c[a][b]<<endl;//直接输出
- }
- }
[2011山东ACM省赛] Binomial Coeffcients(求组合数)的更多相关文章
- [2011山东ACM省赛] Sequence (动态规划)
Sequence Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Given an integer number sequence ...
- [2011山东ACM省赛] Identifiers(模拟)
Identifiers Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 Identifier is an important ...
- [2011山东ACM省赛] Mathman Bank(模拟题)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sr19930829/article/details/24187925 Mathman Bank ni ...
- [2012山东ACM省赛] Pick apples (贪心,完全背包,枚举)
Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描述 Once ago, there is a mystery yard which on ...
- [2012山东ACM省赛] Pick apples (贪心,全然背包,枚举)
Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描写叙述 Once ago, there is a mystery yard which ...
- 山东ACM省赛历届入口
山东省第一届ACM大学生程序设计竞赛 山东省第二届ACM大学生程序设计竞赛 山东省第三届ACM大学生程序设计竞赛 山东省第四届ACM大学生程序设计竞赛 山东省第五届ACM大学生程序设计竞赛 山东省第六 ...
- [2013山东ACM]省赛 The number of steps (可能DP,数学期望)
The number of steps nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; ...
- 第八届山东ACM省赛F题-quadratic equation
这个题困扰了我长达1年多,终于在今天下午用两个小时理清楚啦 要注意的有以下几点: 1.a=b=c=0时 因为x有无穷种答案,所以不对 2.注意精度问题 3.b^2-4ac<0时也算对 Probl ...
- 2019山东ACM省赛L题题解(FLOYD传递闭包的变形)
本题地址 https://cn.vjudge.net/contest/302014#problem/L Median Time Limit: 1 Second Memory Limit: 6 ...
随机推荐
- NOIP2017赛前模拟1:总结
题目: 1.造盒子 题目描述 企鹅豆豆收到了面积为 K 的一块橡皮泥.但是他没有合适的盒子来装下这个橡皮泥.所以他打算造一个盒子. 制造台是有方形网格的平台,每个小正方形边长为 1 .现在豆豆有两类木 ...
- Process类,Thread类,Pool类,gevent类,ProcessPoolExecutor,ThreadPoolExecutor的用法比较
一 Process类 multiprocessing模块下的一个类 创建子进程. 有两种方法 方法一 from multiprocessing import Process import os def ...
- P1473 校门外的树3
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一 ...
- js-点击按钮页面滚动到顶部,底部,指定位置
之所以笔记一下这个,因为我在项目中经常用到. $('.scroll_top').click(function(){$('html,body').animate({scrollTop: '0px'}, ...
- Stockbroker Grapevine(最短路)
poj——1125 Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36112 ...
- Redis - 事务操作与详解
https://blog.csdn.net/J080624/article/details/81669560 写的比较清楚的一个帖子
- linux下安装程序(dep/tgz/rpm)
1.tgz本身就是压缩包,所以前提是先解压出来 tar zxvf test.tgz 而对于安装,可以是程序包本身包含安装,也可以是通过特定shell脚本运行,毕竟这个是不安装包,而只是压缩包. 2.d ...
- scp 时出现permission denied
如果scp到 /usr/local/目录下,则无权限,可更改到用户目录下
- ubuntu 配置 django
安装 安装Apache sudo apt-get install apache2 安装Django 下载Django 安装mod_wsgi sudo apt-get install libapache ...
- ubuntu怎样打开命令行终端(5种方法)
内容中包含 base64string 图片造成字符过多,拒绝显示