东北育才 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[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)相关推荐
- 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 ...
- 组合数学 —— 组合数取模 —— 逆元与递推打表
[逆元求法] 1.要求:p 是质数 2.时间复杂度:O(n) 3.求解 的步骤: 1)通过循环,预先算好所有小于 N 的阶乘(%p)的结果,存到数组 fac[] 中 (fac[i] = i!%p) ...
- Codeforces 869C The Intriguing Obsession 组合数取模
Codeforces 869C The Intriguing Obsession 思考一下人生. 这是一场物语场,而且A题直接puts("Karen")能过,我对此印象非常深.我不 ...
- 东北育才高中2021年高考成绩查询,东北育才学校国际部2021年招生计划
学校每年的招生计划都会发生变化,并不是一成不变的,所以大家一定要时刻关注招生计划.在报考一所学校的时候,大家要有计划性的选择报考学校,要先去了解学校大概招收多少学生,这样大家在报考学校时候的才能更好地 ...
- 组合数学 —— 组合数取模
[概述] 组合数取模,即计算组合数 ,由于 ,同余定理对除法不适用,因此需要使用别的方法来解决这个问题 常见的方法有:使用逆元对组合数取模.递推打表取模.卢卡斯定理.扩展卢卡斯定理等,这些方法应用的场 ...
- 组合数取模 Lucas定理
对于C(n, m) mod p.这里的n,m,p(p为素数)都很大的情况.就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了. 这里用到Lusac定理 ...
- 组合数学 —— 组合数取模 —— 卢卡斯定理与扩展卢卡斯定理
[卢卡斯定理] 1.要求:p 是质数,m.n 很大但 p 很小 或者 n.m 不大但大于 p 2.定理内容 其中, 3.推论 当将 n 写成 p 进制:,将 m 写成 p 进制: 时,有: 4.实现 ...
- bzoj1951 组合数取模 中国剩余定理
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int a[4]={2,3,4679,35 ...
- 组合数取模 - Lucas/exLucas - LibreOJ #181. 二项式系数
文章目录 Lucas定理 证明 拓展问题 一些优化(LibreOJ #181. 二项式系数) 预处理部分 复杂度分析 大佬的玄学优化(取模) AC代码 证明和代码分开,可以根据自己的需要跳转. 去我的 ...
最新文章
- INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES错误解决方法
- eureka多台注册中心_spring cloud注册中心之Eureka
- UVA11134传说中的车(放棋子)
- CDN加速小水管动态应用技巧
- 用python模拟评委打分_用vb 编写一个评委打分的程序1. 编写一个评委打分的程序,实现以下功能:a) 单击“评委给分”按钮时弹出InputBo...
- 数学建模 分支限界算法求解整数规划原理以及编程实现
- pyqt5 python3.4_Ubuntu 14.04下搭建Python3.4 + PyQt5.3.2 + Eric6.0开发平台
- ML 12 13 mixture of gaussions and EM
- k8s的job和CronJob
- window自动备件软件
- 异常连接导致的内存泄漏排查
- ACL'22 | 一种基于隐变量建模的并行文本生成模型
- codeforces733-C. Epidemic in Monstropolis 贪心加链表
- HTML5 CSS3学习
- Android开发屏幕适配
- Python爬虫马蜂窝结伴信息
- Android Studio插件整理
- markdown java代码块 语法_MarkDown 语法详解
- leetcode剑指Offer2
- js html 图片贴纸,Sticker.js 在网页实现便签贴纸效果 - 文章教程
热门文章
- ​万字长文详解文本抽取:从算法理论到实践(附“达观杯”官方baseline实现解析及答疑)...
- 我给鸿星尔克写了一个720°看鞋展厅
- java基础火车站售票(线程安全)
- yyyymmddhhmmss时间格式12小时制24小时制区别
- 企业即时通讯软件选型的注意事项
- Python Basic - python 文件对象的文件交互各类方法描述与实现
- python爬虫实践之爬取豆瓣高评分电影
- 哈工大软件过程与工具
- 数据结构15: 有序表抽象数据类型
- 不加班,最高20天全薪年假在微软做程序员究竟有多爽?