Binomial Coeffcients

nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; padding-right:0px; color:rgb(83,113,197); text-decoration:none; padding-top:0px">

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

 

输入

 

输出

 

演示样例输入

3
1 1
10 2
954 723

演示样例输出

1
45
3557658

提示

 

来源

山东省第二届ACM大学生程序设计竞赛

解题思路:

这道题坑死我了。

。本来非常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(求组合数)的更多相关文章

  1. [2011山东ACM省赛] Sequence (动态规划)

    Sequence Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Given an integer number sequence ...

  2. [2011山东ACM省赛] Identifiers(模拟)

    Identifiers Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述  Identifier is an important ...

  3. [2011山东ACM省赛] Mathman Bank(模拟题)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sr19930829/article/details/24187925 Mathman Bank ni ...

  4. [2012山东ACM省赛] Pick apples (贪心,完全背包,枚举)

    Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描述 Once ago, there is a mystery yard which on ...

  5. [2012山东ACM省赛] Pick apples (贪心,全然背包,枚举)

    Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描写叙述 Once ago, there is a mystery yard which ...

  6. 山东ACM省赛历届入口

    山东省第一届ACM大学生程序设计竞赛 山东省第二届ACM大学生程序设计竞赛 山东省第三届ACM大学生程序设计竞赛 山东省第四届ACM大学生程序设计竞赛 山东省第五届ACM大学生程序设计竞赛 山东省第六 ...

  7. [2013山东ACM]省赛 The number of steps (可能DP,数学期望)

    The number of steps nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; ...

  8. 第八届山东ACM省赛F题-quadratic equation

    这个题困扰了我长达1年多,终于在今天下午用两个小时理清楚啦 要注意的有以下几点: 1.a=b=c=0时 因为x有无穷种答案,所以不对 2.注意精度问题 3.b^2-4ac<0时也算对 Probl ...

  9. 2019山东ACM省赛L题题解(FLOYD传递闭包的变形)

    本题地址 https://cn.vjudge.net/contest/302014#problem/L Median Time Limit: 1 Second      Memory Limit: 6 ...

随机推荐

  1. 关闭webkit浏览器的自动完成,修正,大写

    关闭input自动完成<input name="q" type="text" autocomplete="off"/>关闭整个表 ...

  2. codeforces 449D DP+容斥

    Jzzhu and Numbers Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u ...

  3. 一款多功能的移动端滚动选择器,支持单选到多选、支持多级级联、提供自定义回调函数、提供update函数二次渲染、重定位函数、兼容pc端拖拽等等..

    https://github.com/onlyhom/mobileSelect.js/blob/master/docs/README-CN.md mobileSelect.js 一款多功能的移动端滚动 ...

  4. 第5章-unix网络编程 TCP/服务端程序示例

    这一章主要是完成一个完整的tcp客户/服务器程序.通过一很简单的例子.弄清客户和服务器如何启动,如何终止,发生了某些错误会发生什么.这些事很重要的  客户端代码 #include "unp. ...

  5. dedecms--二次开发文章内容页未登录禁止访问和同一个帐号只允许一个ip登录

    最近在用dedecms二次开发会员功能,领导要求,会员未登录不允许访问文章内容页,和同一个账号只允许一个ip登录,我是将这两个在一起判断的,判断session存不存在,不存在的情况下就是未登录,这时候 ...

  6. 十六进制字符串jpg图片互转

    十六制字符串jpg图片互转(格式:FFD8FFE000104A******)如:FFD8FFE000104A46494600010100000100010000FFDB0043000806060706 ...

  7. 在Eclipse中打开Hadoop工程

    1. 安装虚拟机,我用的是VMware Workstation 12 Player 2. 在VM中安装Ubuntu,我用的镜像文件是ubuntu-15.10-desktop-amd64.iso 3. ...

  8. 洛谷——P1508 Likecloud-吃、吃、吃

    P1508 Likecloud-吃.吃.吃 题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一 ...

  9. android应用无法接收到广播?

    本篇文章记录Android应用无法接收到广播的几种case 1. 没有register 广播其实是一种订阅者模式,所以当然需要先register,register的方式有两种 1.1  through ...

  10. 微信小程序 压缩图片并上传

    转自https://segmentfault.com/q/1010000012507519 wxml写入 <view bindtap='uploadImg'>上传</view> ...