洛谷.3807.[模板]卢卡斯定理(Lucas)
题目链接
Lucas定理
日常水题...sublime和C++字体死活不同步怎么办...
//想错int范围了...不要被longlong坑
//这个范围现算阶乘比预处理快得多
#include <cstdio>
typedef long long LL;
const int N=1e5+5;
LL n,m,p;//,fac[N+3];
LL FP(LL x,LL k,LL p)
{
	LL t=1;
	for(; k; k>>=1,x=x*x%p)
		if(k&1) t=t*x%p;
	return t;
}
inline LL inv(LL x,LL p)
{
	return FP(x,p-2,p);
}
//LL C(LL n,LL m)
//{
//	if(n<m) return 0ll;
// 	return fac[n]*inv(fac[m],p)%p*inv(fac[n-m],p)%p;
//}
LL C(LL n,LL m)
{
	if(n<m) return 0ll;
	LL up=1ll,down=1ll;
	for(LL i=n-m+1; i<=n; ++i) (up*=i)%=p;
	for(LL i=2; i<=m; ++i) (down*=i)%=p;
	return up*inv(down,p)%p;
}
LL Lucas(LL n,LL m,LL p)
{
	LL ans=1;
	for(; m && ans; n/=p, m/=p)
		(ans*=C(n%p,m%p))%=p;
	return ans;
}
int main()
{
//	fac[0]=fac[1]=1;
	LL t; scanf("%lld",&t);
	while(t--)
	{
		scanf("%lld%lld%lld",&n,&m,&p);
//		for(LL i=2; i<=p; ++i) fac[i]=i*fac[i-1]%p;
		printf("%lld\n",Lucas(n+m,m,p));
	}
	return 0;
}
												
											洛谷.3807.[模板]卢卡斯定理(Lucas)的更多相关文章
- 【luogu P3807】【模板】卢卡斯定理/Lucas 定理(含 Lucas 定理证明)
		
[模板]卢卡斯定理/Lucas 定理 题目链接:luogu P3807 题目大意 求 C(n,n+m)%p 的值. p 保证是质数. 思路 Lucas 定理内容 对于非负整数 \(n\),\(m\), ...
 - 卢卡斯定理Lucas
		
卢卡斯定理Lucas 在数论中,\(Lucas\)定理用于快速计算\(C^m_n ~ \% ~p\),即证明\(C^m_n = \prod_{i = 0} ^kC^{m_i}_{n_i}\)其中\(m ...
 - 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)
		
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...
 - 【洛谷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])* ...
 - [洛谷P4720] [模板] 扩展卢卡斯
		
题目传送门 求组合数的时候,如果模数p是质数,可以用卢卡斯定理解决. 但是卢卡斯定理仅仅适用于p是质数的情况. 当p不是质数的时候,我们就需要用扩展卢卡斯求解. 实际上,扩展卢卡斯=快速幂+快速乘+e ...
 - 洛谷P3375 [模板]KMP字符串匹配
		
To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...
 - LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)
		
为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...
 - 卢卡斯定理 Lucas  (p为素数)
		
证明摘自:(我网上唯一看得懂的证明) https://blog.csdn.net/alan_cty/article/details/54318369 结论:(显然递归实现)lucas(n,m)=luc ...
 - 【AC自动机】洛谷三道模板题
		
[题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模 ...
 
随机推荐
- Faster rcnn代码理解(4)
			
上一篇我们说完了AnchorTargetLayer层,然后我将Faster rcnn中的其他层看了,这里把ROIPoolingLayer层说一下: 我先说一下它的实现原理:RPN生成的roi区域大小是 ...
 - JS禁止鼠标右键、禁止全选、复制、粘贴的方法(所谓的防盗功能)
			
简述:一个防君子不防小人的鸡肋的功能,针对小白还行. 代码如下: <script> //都能支持 document.oncontextmenu = function (e) { retur ...
 - exp自动备份在bat中不执行
			
在命令行前加cd c:\users\...... 先定位进入可以exp的目录下,再执行exp
 - Android APP—— 开发入门教程
			
一.SDK下载 下载:adt-bundle-windows-x86_64-20140702.zip(20140702 已经是最后版本了) 解压出来如下: 点击Eclipse安装 创建一个新的工作空间安 ...
 - mongodb数据库安装及常见操作
			
客户端和服务端的安装 # rpm -ivh mongo-10gen-2.4.6-mongodb_1.x86_64.rpm mongo-10gen-server-2.4.6-mongodb_1.x86_ ...
 - java 语言的主要特点
			
java 语言主要特点如下: 1:简单 2:面向对象 3:分布性 4:可移植性 5:安全性 6:健壮性 二:java 主要术语 三:java 核心是面向对象程序设计OOP 四:封装 五:多态 六:继承 ...
 - linux下各目录的作用
			
这么久了,一直觉得对于linux的运作情况还是懵懵懂懂的样子,刚才专门又看了一下 linux 下各目录的作用,记下来,以备以后再忘了. 下面内容来自:http://www.linuxidc.com/L ...
 - SeaJS入门教程系列之使用SeaJS(二)
			
SeaJS入门教程系列之使用SeaJS(二) 作者: 字体:[增加 减小] 类型:转载 时间:2014-03-03我要评论 这篇文章主要介绍了SeaJS入门教程系列之使用SeaJS,着重介绍了SeaJ ...
 - 【linux】tcpdump抓包
			
tcpdump -i eth0 host 192.168.11.22 -w ./target.cap 上面指令,抓取eth0中与192.168.11.22相关的流量,保存到target.cap中
 - CSS----布局注意事项
			
1.当div标签中含有子标签,如果div标签的大小是被div中的子标签撑起来的,那么可能布局(之后)可能就会出现问题(if 父级div中没有border,padding,inlinecontent,子 ...