洛谷 P3807 【模板】卢卡斯定理
2024-08-27 12:47:34
题目背景
这是一道模板题。
题目描述
给定n,m,p(1\le n,m,p\le 10^51≤n,m,p≤105)
求 C_{n+m}^{m}\ mod\ pCn+mm mod p
保证P为prime
C表示组合数。
一个测试点内包含多组数据。
输入输出格式
输入格式:
第一行一个整数T(T\le 10T≤10),表示数据组数
第二行开始共T行,每行三个数n m p,意义如上
输出格式:
共T行,每行一个整数表示答案。
输入输出样例
输入样例#1: 复制
2
1 2 5
2 1 5
输出样例#1: 复制
3
3
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 100000
using namespace std;
int T,p;
long long sum[MAXN];
long long pow(long long a,long long x,long long p){
long long s=%p;
for(;x;x>>=){
if(x&) s=s*a%p;
a=a*a%p;
}
return s;
}
long long C(long long n,long long m){
if(m>n) return ;
return sum[n]*pow(sum[m],p-,p)%p*pow(sum[n-m],p-,p)%p;
}
long long Lucas(long long n,long long m){
if(m==) return ;
return C(n%p,m%p)*Lucas(n/p,m/p)%p;
}
int main(){
scanf("%d",&T);
while(T--){
int n,m;
scanf("%d%d%d",&n,&m,&p);
sum[]=;
for(int i=;i<=p;i++) sum[i]=sum[i-]*i%p;
cout<<Lucas(n+m,n)<<endl;
}
}
最新文章
- Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i (译)转
- AADC安装指南
- 【Java学习笔记】其他对象API
- String、StringBuffer与StringBuilder之间区别[全屏看文]
- Java学习-032-JavaWeb_001 -- Tomcat环境部署及基本配置
- php访问数据库思维导图
- [转]将Word转(保存)为带书签的PDF
- ok6410串口裸机总结
- 【BZOJ 1497】 [NOI2006]最大获利
- C++ 顶层 const
- vue.js路由参数简单实例讲解------简单易懂
- OBS源码解析(1)main函数
- gm8180:arm linux启动加载模块、运行程序
- mysql 索引学习--多条件等值查询,顺序不同也能应用联合索引啦
- Tomcat系列(6)——Tomcat处理一个HTTP请求的过程
- fastjson将json字符串转化成map的五种方法
- php session_start()
- 关于时间:UTC/GMT/xST/ xDT
- mybaits动态SQL中的DECIMAL
- docker微服务部署之:七、Rancher进行微服务扩容和缩容
热门文章
- java生成饼图svg
- Fire Air(华科校赛 网络赛)
- 事件绑定、取消的二种形式 &; call
- C++中vector用法
- vscode F12 不能用,原来是快捷键冲突了。
- COM(Component Object Model)接口定义
- 关于mysql服务突然运行不了的问题-“本地计算机上的mysql服务启动后停止,某些...”
- 环境变量HISTCONTROL命令及对快捷键Ctrl+o命令的影响
- DB2表空间
- JS应用之正则表达式