组合数取模(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[9902][9902];
int main()
{ int i,j; int n,m; cin>>n>>m; for(i=0;i<=9901;i++) { C[i][i]=1; C[i][1]=1; C[i][0]=1; } for(i=2;i<=9901;i++) { for(j=1;j<=i;j++) { C[i][j]=((C[i-1][j-1])%9901+(C[i-1][j])%9901)%9901; } } int ans=0; ans=(C[n/9901][m/9901]*C[n%9901][m%9901])%9901; 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=1; a%=p; while(b) { if(b&1) { ans=ans*a%p; b--; } b>>=1; a=a*a%p; } return ans;
}
LL C(LL n, LL m)
{ if(m>n)return 0; LL ans=1; for(int i=1; i<=m; i++) { LL a=(n+i-m)%p; LL b=i%p; ans=ans*(a*quick_mod(b,p-2)%p)%p; } return ans;
}
LL Lucas(LL n, LL m)
{ if(m == 0)return 1; return C(n%p,m%p)*Lucas(n/p,m/p)%p;
}
int main()
{ scanf("%lld%lld", &n, &m); p=9901; printf("%lld\n", Lucas(n,m)); return 0;
}

还有一种是直接打表..这里发一下我旁边dalao写的程序

#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<cmath>#include<algorithm>#define ll long longusing 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]);}

转载于:https://www.cnblogs.com/ashon37w/p/7045539.html

东北育才 DAY2组合数取mod (comb)相关推荐

  1. 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 ...

  2. 组合数学 —— 组合数取模 —— 逆元与递推打表

    [逆元求法] 1.要求:p 是质数 2.时间复杂度:O(n) 3.求解  的步骤: 1)通过循环,预先算好所有小于 N 的阶乘(%p)的结果,存到数组 fac[] 中 (fac[i] = i!%p) ...

  3. Codeforces 869C The Intriguing Obsession 组合数取模

    Codeforces 869C The Intriguing Obsession 思考一下人生. 这是一场物语场,而且A题直接puts("Karen")能过,我对此印象非常深.我不 ...

  4. 东北育才高中2021年高考成绩查询,东北育才学校国际部2021年招生计划

    学校每年的招生计划都会发生变化,并不是一成不变的,所以大家一定要时刻关注招生计划.在报考一所学校的时候,大家要有计划性的选择报考学校,要先去了解学校大概招收多少学生,这样大家在报考学校时候的才能更好地 ...

  5. 组合数学 —— 组合数取模

    [概述] 组合数取模,即计算组合数 ,由于 ,同余定理对除法不适用,因此需要使用别的方法来解决这个问题 常见的方法有:使用逆元对组合数取模.递推打表取模.卢卡斯定理.扩展卢卡斯定理等,这些方法应用的场 ...

  6. 组合数取模 Lucas定理

    对于C(n, m) mod p.这里的n,m,p(p为素数)都很大的情况.就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了. 这里用到Lusac定理 ...

  7. 组合数学 —— 组合数取模 —— 卢卡斯定理与扩展卢卡斯定理

    [卢卡斯定理] 1.要求:p 是质数,m.n 很大但 p 很小 或者 n.m 不大但大于 p 2.定理内容 其中, 3.推论 当将 n 写成 p 进制:,将 m 写成 p 进制: 时,有: 4.实现 ...

  8. bzoj1951 组合数取模 中国剩余定理

    #include<bits/stdc++.h> using namespace std; typedef long long ll; const int a[4]={2,3,4679,35 ...

  9. 组合数取模 - Lucas/exLucas - LibreOJ #181. 二项式系数

    文章目录 Lucas定理 证明 拓展问题 一些优化(LibreOJ #181. 二项式系数) 预处理部分 复杂度分析 大佬的玄学优化(取模) AC代码 证明和代码分开,可以根据自己的需要跳转. 去我的 ...

最新文章

  1. INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES错误解决方法
  2. eureka多台注册中心_spring cloud注册中心之Eureka
  3. UVA11134传说中的车(放棋子)
  4. CDN加速小水管动态应用技巧
  5. 用python模拟评委打分_用vb 编写一个评委打分的程序1. 编写一个评委打分的程序,实现以下功能:a) 单击“评委给分”按钮时弹出InputBo...
  6. 数学建模 分支限界算法求解整数规划原理以及编程实现
  7. pyqt5 python3.4_Ubuntu 14.04下搭建Python3.4 + PyQt5.3.2 + Eric6.0开发平台
  8. ML 12 13 mixture of gaussions and EM
  9. k8s的job和CronJob
  10. window自动备件软件
  11. 异常连接导致的内存泄漏排查
  12. ACL'22 | 一种基于隐变量建模的并行文本生成模型
  13. codeforces733-C. Epidemic in Monstropolis 贪心加链表
  14. HTML5 CSS3学习
  15. Android开发屏幕适配
  16. Python爬虫马蜂窝结伴信息
  17. Android Studio插件整理
  18. markdown java代码块 语法_MarkDown 语法详解
  19. leetcode剑指Offer2
  20. js html 图片贴纸,Sticker.js 在网页实现便签贴纸效果 - 文章教程

热门文章

  1. ​万字长文详解文本抽取:从算法理论到实践(附“达观杯”官方baseline实现解析及答疑)...
  2. 我给鸿星尔克写了一个720°看鞋展厅
  3. java基础火车站售票(线程安全)
  4. yyyymmddhhmmss时间格式12小时制24小时制区别
  5. 企业即时通讯软件选型的注意事项
  6. Python Basic - python 文件对象的文件交互各类方法描述与实现
  7. python爬虫实践之爬取豆瓣高评分电影
  8. 哈工大软件过程与工具
  9. 数据结构15: 有序表抽象数据类型
  10. 不加班,最高20天全薪年假在微软做程序员究竟有多爽?