东北育才 DAY2组合数取mod (comb)
组合数取模(comb)
【问题描述】
计算C(m,n)mod 9901的值
【输入格式】
从文件comb.in中输入数据。
输入的第一行包含两个整数,m和n
【输出格式】
输出到文件comb.out中。
输出一行,一个整数
【样例输入】
2 1
【样例输出】
2
【数据规模与约定】
对于 20%的数据,n<=m<=20
对于 40%的数据,n<=m<=2000
对于 100%的数据,n<=m<=20000
这道题描述很清楚,有很多种做法,第一题还是挺水的,而且很多网站上也有
自己比较懒,因为摸的数很小,写了一个半打表半lucas。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int C[][];
int main()
{
int i,j;
int n,m;
cin>>n>>m;
for(i=;i<=;i++)
{
C[i][i]=;
C[i][]=;
C[i][]=;
}
for(i=;i<=;i++)
{
for(j=;j<=i;j++)
{
C[i][j]=((C[i-][j-])%+(C[i-][j])%)%;
}
}
int ans=;
ans=(C[n/][m/]*C[n%][m%])%;
cout<<ans;
}
还有一种是直接lucas..
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long LL;
LL n,m,p;
LL quick_mod(LL a, LL b)
{
LL ans=;
a%=p;
while(b)
{
if(b&)
{
ans=ans*a%p;
b--;
}
b>>=;
a=a*a%p;
}
return ans;
}
LL C(LL n, LL m)
{
if(m>n)
return ;
LL ans=;
for(int i=; i<=m; i++)
{
LL a=(n+i-m)%p;
LL b=i%p;
ans=ans*(a*quick_mod(b,p-)%p)%p;
}
return ans;
}
LL Lucas(LL n, LL m)
{
if(m == )
return ;
return C(n%p,m%p)*Lucas(n/p,m/p)%p;
}
int main()
{
scanf("%lld%lld", &n, &m);
p=;
printf("%lld\n", Lucas(n,m));
return ;
}
还有一种是直接打表..这里发一下我旁边dalao写的程序
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
int C[20039]={0};
int main()
{
C[0]=1;
int m,n,a=1,b,stp,STP,MOD=9901;
scanf("%d%d",&m,&n);
while(a<=m)
{
stp=C[0];
for(b=1;b<=a;b++)
{
STP=C[b];
C[b]=stp+C[b];
C[b]%=MOD;
stp=STP;
}
a++;
}
printf("%d",C[n]);
}
东北育才 DAY2组合数取mod (comb)的更多相关文章
- 组合数取mod
组合数取mod 条件mod是质数,inv 是逆元,fac是阶层: 用于n在10^5左右 maxn=100505: ll fact[maxn],inv[maxn]; ll Pow(ll x,ll n){ ...
- Uva12034 (组合数取模)
题意:两匹马比赛有三种比赛结果,n匹马比赛的所有可能结果总数 解法: 设答案是f[n],则假设第一名有i个人,有C(n,i)种可能,接下来还有f(n-i)种可能性,因此答案为 ΣC(n,i)f(n-i ...
- 组合数取模Lucas定理及快速幂取模
组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1) , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ...
- 排列组合+组合数取模 HDU 5894
// 排列组合+组合数取模 HDU 5894 // 题意:n个座位不同,m个人去坐(人是一样的),每个人之间至少相隔k个座位问方案数 // 思路: // 定好m个人 相邻人之间k个座位 剩下就剩n-( ...
- hdu 3944 DP? 组合数取模(Lucas定理+预处理+帕斯卡公式优化)
DP? Problem Description Figure 1 shows the Yang Hui Triangle. We number the row from top to bottom 0 ...
- [BZOJ 3129] [Sdoi2013] 方程 【容斥+组合数取模+中国剩余定理】
题目链接:BZOJ - 3129 题目分析 使用隔板法的思想,如果没有任何限制条件,那么方案数就是 C(m - 1, n - 1). 如果有一个限制条件是 xi >= Ai ,那么我们就可以将 ...
- lucas定理解决大组合数取模
LL MyPow(LL a, LL b) { LL ret = ; while (b) { ) ret = ret * a % MOD; a = a * a % MOD; b >>= ; ...
- 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)
J. Ceizenpok’s formula time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- BZOJ_2142_礼物_扩展lucas+组合数取模+CRT
BZOJ_2142_礼物_扩展lucas+组合数取模 Description 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同 ...
随机推荐
- 盘点国内外那些有野心的BI公司
在当前BI商业智能市场打开并被广泛应用的背景下,国内外涌现出一大批优秀的BI产品.当然好的BI产品一定离不开好的BI公司,在最新发布的Gartner 2017 年<商业智能和分析平台魔力象限&g ...
- springboot(十二):springboot如何测试打包部署
有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...
- js函数的使用
js函数应用 [函数的声明及调用]: 1.函数声明: function 函数名(参数1,参数2,·····){ //函数体 retu ...
- HDFS 架构简述
HDFS 架构简述 Hadoop分布式文件系统(HDFS)是一个分布式的文件系统,运行在廉价的硬件上.它与现有的分布式文件系统有很多相似之处.然而与其他的分布式文件系统的差异也是显着的.HDFS是高容 ...
- [原创]Nexus5 内核编译烧录过程记录
参考Android系统源代码情况分析第二章进行实践,为了提高效率,也为了增加实践机会,使用Nexus5进行内核编译.需要说明的是,Android源代码工程默认是不包含它所使用的Linux内核源码,如果 ...
- 谈一谈JDK8的函数式编程 (一)
系列之前我想说的 最近有一段时间没写博客了,这几天回到学校,才闲下来,决定写一写最近学习到的只是,既是为了分享,也是为了巩固.之前看到过一篇调查,文章的数据是学习新知识,光是看只能获得大约5%,然 ...
- 017 多对多关联映射 双向(many-to-many)
多对多关联映射 双向 两方都持有对象引用,修改对象模型,但数据的存储没有变化. 再修改映射文件: public class Role { private int id; private String ...
- java虚拟机学习-JVM调优总结-分代垃圾回收详述(9)
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象, ...
- 前端小课堂 js:函数的创建方式及区别
js 函数的创建大体有这几种方式: -1-函数表达式(函数字面量): 说白了就是把一个函数赋值给了一个变量. var fun1 = function(index){ alert(index); } f ...
- Fiddler中如何抓取app中https(443端口)数据
Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获手机发出的HTTP/HTTPS请求,总结下Fiddler截获IPhone和Android发出的HTTP/HTTPS包,前提条件是:安装 ...