luogu P3807 【模板】卢卡斯定理
2024-08-31 19:38:00
求 C(n,n+m)%p
C(m,n)%p=C(m%p,n%p)*C(m/p,n/p)
#include<cstdio>
#include<cstring>
#include<iostream>
#define N 4000010
using namespace std;
#define int long long
int jc[N],inv[N],p;
inline int ksm(int x,int y,int mod){
int ans=1;
while(y){
if(y&1)ans=(ans*x)%mod;
x=(x*x)%mod;
y>>=1;
}
return ans;
}
inline int C(int x,int y){
if(y>x)return 0;
return jc[x]*inv[x-y]%p*inv[y]%p;
}
int n,m;
inline void pre(){
jc[0]=1;for(int i=1;i<p;i++)jc[i]=(jc[i-1]*i)%p;
inv[p-1]=ksm(jc[p-1],p-2,p);
for(int i=p-2;i>=0;i--)inv[i]=inv[i+1]*(i+1)%p;
}
inline int lucas(int n,int m){
if(!m)return 1;
return C(n%p,m%p)*lucas(n/p,m/p)%p;
}
signed main(){
int T;
cin>>T;
while(T--){
cin>>n>>m>>p;
n=n+m;
pre();
cout<<lucas(n,m)<<endl;
}
}
最新文章
- AFNetWorking设置HTTPRequestHeaders的坑
- CF #374 (Div. 2) D. 贪心,优先队列或set
- OS X 添加环境变量
- Babelfish(二分查找,字符串的处理略有难度,用sscanf输入)
- vb6 枚举对象属性
- C# 把引用的dll嵌入到exe文件中
- tomcat内存溢出问题
- asp.net core 2.0 web api基于JWT自定义策略授权
- 201521123100 《Java程序设计》 第1周学习总结
- VMware Workstation Pro下载密钥
- logstash关于date时间处理的几种方式总结
- NN:神经网络实现识别手写的1~9的10个数字—Jason niu
- docker-compose初试及命令基础
- having 与where 的异同点
- Android getWindow().setFlags方法
- MySQL 高级查询操作
- html5实现刮刮卡效果
- DNS服务器的解析
- ros nodelet 使用
- css总结3:Flex 布局教程:Flex-demos(转)