【Luogu3807】【模板】卢卡斯定理(数论)
来源:互联网 发布:电脑软件制作教程 编辑:程序博客网 时间:2024/05/21 09:13
题目描述
给定
求
保证
一个测试点内包含多组数据。
输入输出格式
输入格式:
第一行一个整数
第二行开始共
输出格式:
共
输入输出样例
输入样例#1:
2
1 2 5
2 1 5
输出样例#1:
3
3
题解
卢卡斯定理模板题
卢卡斯定理:
当
递归计算即可
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#include<vector>#include<queue>using namespace std;#define ll long longll n,m,P;ll jc[100100];inline int read(){ int x=0,t=1;char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=-1,ch=getchar(); while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar(); return x*t;}ll Pow(ll a,ll b){ ll s=1; while(b) { if(b&1)s=1ll*s*a%P; a=a*1ll*a%P; b>>=1; } return s;}ll C(ll n,ll m){ if(m>n)return 0; return jc[n]*Pow(jc[m]*jc[n-m]%P,P-2)%P;}ll Lucas(ll n,ll m){ if(m==0)return 1; return (Lucas(n/P,m/P)*C(n%P,m%P))%P;}int main(){ int T=read(); while(T--) { jc[0]=1; n=read();m=read();P=read(); for(int i=1;i<=P;++i)jc[i]=jc[i-1]*1ll*i%P; printf("%lld\n",Lucas(n+m,m)%P); } return 0;}
阅读全文
0 0
- 【Luogu3807】【模板】卢卡斯定理(数论)
- 【数论定理】卢卡斯定理
- 数论-Lucas(卢卡斯定理)
- lucas (数论定理)
- 【数论】Lucas定理推导过程+模板
- [模板]-卢卡斯(Lucas)定理
- YAPTCHA(数论“威尔逊定理”)
- 常见数论定理(二)
- 唯一分解定理(数论)
- HDU3037——Saving Beans(数论,组合数取模,lucas定理模板)
- hdu5698百度之星瞬间移动(数论/卢卡斯定理)
- 数论定理
- 模板整理:数论---组合数/欧几里得/孙子定理/费马小定理/欧拉定理及相关
- 【数论】数论四大定理
- 组合数取模(卢卡斯定理、模板)
- 【模板】卢卡斯定理
- (ACM数论)中国剩余定理(孙子定理)
- POJ 1006 Biorhythms 数论-(孙子定理)
- Android网络状态判断工具类(全)
- 关于OpenCV3配置vs之后waitKey(0);不正常
- 编辑器之神vim
- OpenCV学习系列(一)
- 友元函数
- 【Luogu3807】【模板】卢卡斯定理(数论)
- Jvav内部类详解
- 细腻的感动·《乖·摸摸头》·二
- 后缀数组
- C++的特殊成员理解
- 本地可以服务器上不行的问题之https加载cdn资源
- 键盘输入的内存流实现
- OVS ARP responder
- lefwf