【数论】卢卡斯定理模板 洛谷P3807
【数论】卢卡斯定理模板 洛谷P3807
>>>>题目
【题目】
https://www.luogu.org/problemnew/show/P3807
【输入格式】
第一行一个整数T(T\le 10T≤10),表示数据组数
第二行开始共T行,每行三个数n m p,意义如上
【输出格式】
共T行,每行一个整数表示答案。
【输入样例】
2
1 2 5
2 1 5
【输出样例】
3
3
>>>>分析
emmmm模板题还是不用分析了吧
卢卡斯定理解决的就是组合数C(n,m)中m,n太大的情况
根据定理的内容,C(n,m)=C(n/p,m/p)*C(n%p,m%p)其中p是模数
我们只需要不断递归求解C(n/p,m/p)就可以啦
因为同余方程不满足两边同时除一个数,那么只能将除一个数转化成乘这个数在模数p意义下的逆元
求逆元的方式有很多种,在我的另一个博客里面会有详细介绍φ(>ω<*)
#include<bits/stdc++.h>
#define ll long long
#define L I64d
#define maxn 100005
using namespace std;
ll fac[*maxn];
int p,T;
void init(int n,int m)//预处理阶乘
{
fac[]=;
for(int i=;i<=n+m;i++) fac[i]=fac[i-]*i%p;
}
ll quickpow(ll x,ll y)
{
ll ans=;
while(y)
{
if(y&) ans=ans*x%p;
x=x*x%p;
y=y>>;
}
return ans%p;
}
ll C(ll m,ll n)
{
if(m>n) return ;
return fac[n]*quickpow(fac[m],p-)%p*quickpow(fac[n-m],p-);//费马小定理求逆元
}
ll lucas(ll m,ll n)
{
if(!m) return ;
return lucas(m/p,n/p)*C(m%p,n%p)%p;
}
int main()
{
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d%d",&n,&m,&p);
init();
printf("%Ld\n",lucas(m,n+m));
}
return ;
}
/*
2
1 2 5
2 1 5
*/
完结撒花✿✿ヽ(°▽°)ノ✿
【数论】卢卡斯定理模板 洛谷P3807的更多相关文章
- KMP字符串匹配 模板 洛谷 P3375
KMP字符串匹配 模板 洛谷 P3375 题意 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.(如果 ...
- 洛谷——P3807 【模板】卢卡斯定理
P3807 [模板]卢卡斯定理 洛谷智推模板题,qwq,还是太弱啦,组合数基础模板题还没做过... 给定n,m,p($1\le n,m,p\le 10^5$) 求 $C_{n+m}^{m}\ mod\ ...
- 洛谷 P3807 【模板】卢卡斯定理
P3807 [模板]卢卡斯定理 题目背景 这是一道模板题. 题目描述 给定n,m,p(1\le n,m,p\le 10^51≤n,m,p≤105) 求 C_{n+m}^{m}\ mod\ pCn+mm ...
- 【刷题】洛谷 P3807 【模板】卢卡斯定理
题目背景 这是一道模板题. 题目描述 给定\(n,m,p( 1\le n,m,p\le 10^5)\) 求 \(C_{n+m}^{m}\ mod\ p\) 保证 \(p\) 为prime \(C\) ...
- 【洛谷P3807】(模板)卢卡斯定理
卢卡斯定理 把n写成p进制a[n]a[n-1][n-2]…a[0],把m写成p进制b[n]b[n-1][n-2]…b[0],则C(n,m)与C(a[n],b[n])*C(a[n-1],b[n-1])* ...
- 【模板】LIS模板 洛谷P1091 [NOIP2004提高组]合唱队形 [2017年4月计划 动态规划11]
以题写模板. 写了两个:n^2版本与nlogn版本 P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队 ...
- 树链剖分模板(洛谷P3384)
洛谷P3384 #include <bits/stdc++.h> #define DBG(x) cerr << #x << " = " < ...
- [洛谷P3807]【模板】卢卡斯定理
题目大意:给你$n,m,p(p \in \rm prime)$,求出$C_{n + m}^m\bmod p(可能p\leqslant n,m)$ 题解:卢卡斯$Lucas$定理,$C_B^A\bmod ...
- 洛谷P3807 【模板】卢卡斯定理exgcd
题目背景 这是一道模板题. 题目描述 给定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为pri ...
随机推荐
- winsock I/O模型的分析
几种winsock I/O模型的分析 套接字是通信的基础,是支持网络协议数据通信的基本接口.Winsocket 提供了一些有趣的I/O模型,有助于应用程序通过一种“异步”方式,一次对一个或者多个套接字 ...
- t-SNE完整笔记
http://www.datakit.cn/blog/2017/02/05/t_sne_full.html t-SNE(t-distributed stochastic neighbor embedd ...
- SpringCloud入门之应用程序上下文服务(Spring Cloud Context)详解
构建分布式系统非常复杂且容易出错.Spring Cloud为最常见的分布式系统模式提供了简单易用的编程模型,帮助开发人员构建弹性,可靠和协调的应用程序.Spring Cloud构建于Spring Bo ...
- javascript数组方法
[声明一个数组]var a=[1,2,3]; [定义数组的长度]var a=new Array(2); [连接数组]数组1.concat(数组2,数组3) [将数组转换为字符串,可自定连接符]arr. ...
- python学习之爬虫初体验
作业来源: "https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851" ** 1.简述爬虫原理 通用爬虫 即(搜索 ...
- php 当前日期加一天和指定日期加一天
1.给当前时间加一天?一小时? <?phpecho "今天:",date('Y-m-d H:i:s'),"<br>";echo "明 ...
- Oarcle之事务
update:更新 例如转账: update emp_ temp set sal = sal-500 where ename = 'JONES':(更新表中sal项 为sal-500 是当ename= ...
- 并查集 P3367 【模板】并查集
P3367 [模板]并查集 #include<iostream> #include<algorithm> #include<cstdio> #include< ...
- ceph添加osd(ceph-deploy)
修改主机名和 /etc/hosts 关闭防火墙和 SELINUX 安装和配置 NTP ceph-deploy 节点安装 安装 ceph-deploy sudo yum install ceph-dep ...
- FIT2096 Assignment 2 2019
FIT2096 Assignment 2 2019_v1.2.docx 9/04/2019 11:34 AMPage 1 | 4FIT2096 Assignment 2 2019Transformat ...