【BZOJ2982】combination Lucas定理
定理 combination
2023-09-11 14:15:27 时间
【BZOJ2982】combination
Description
LMZ有n个不同的基友,他每天晚上要选m个进行[河蟹],而且要求每天晚上的选择都不一样。那么LMZ能够持续多少个这样的夜晚呢?当然,LMZ的一年有10007天,所以他想知道答案mod 10007的值。(1<=m<=n<=200,000,000)
Input
第一行一个整数t,表示有t组数据。(t<=200)
接下来t行每行两个整数n, m,如题意。
Output
T行,每行一个数,为C(n, m) mod 10007的答案。
Sample Input
4
5 1
5 2
7 3
4 2
5 1
5 2
7 3
4 2
Sample Output
5
10
35
6
10
35
6
题解:百度:lucas定理
#include <cstdio> #include <cstring> #include <iostream> #define mod 10007 using namespace std; int n,jc[10010],jcc[10010]; int pm(int x,int y) { int z=1; while(y) { if(y&1) z=z*x%mod; x=x*x%mod,y>>=1; } return z; } int dfs(int x,int y) { if(!y) return 1; if(x<y) return 0; if(x<mod&&y<mod) return jc[x]*jcc[y]%mod*jcc[x-y]%mod; return dfs(x/mod,y/mod)*dfs(x%mod,y%mod)%mod; } int main() { scanf("%d",&n); int i,a,b; for(i=1,jc[0]=jcc[0]=1;i<=10007;i++) jc[i]=jc[i-1]*i%mod,jcc[i]=pm(jc[i],mod-2); for(i=1;i<=n;i++) { scanf("%d%d",&a,&b); printf("%d\n",dfs(a,b)); } return 0; }
相关文章
- A*B Problem 485 (数学题+九余数定理)
- Pseudoprime numbers---费马小定理
- 关于傅里叶分析与香农采样定理
- 浅谈压缩感知(十二):压缩感知与奈奎斯特采样定理
- HDU1212 Big Number 【同余定理】
- 【数字信号处理】线性时不变系统 LTI “ 输入 “ 与 “ 输出 “ 之间的关系 ( 线性卷积起点定理 | 左边序列概念 | 推理 )
- 极大极小定理
- CSDN 厦门大学线下编程比赛第一题:求和(同余定理)
- HDOJ 4549 M斐波那契数列 费马小定理+矩阵高速幂
- 透彻理解贝叶斯定理:先验概率、后验概率
- 中国剩余定理
- 数据结构和算法 数论 中国余数定理
- 概率论大作业3——中心极限定理matlab验证及检验(前置知识)
- 神经网络的万能逼近定理
- 万能近似定理