【Luogu3807】【模板】卢卡斯定理(数论)

来源:互联网 发布:电脑软件制作教程 编辑:程序博客网 时间:2024/05/21 09:13

题目描述

给定n,m,p(1n,m,p105)

Cmn+mmodp

保证Pprime
C表示组合数。

一个测试点内包含多组数据。

输入输出格式

输入格式:

第一行一个整数T(T10),表示数据组数

第二行开始共T行,每行三个数nmp,意义如上

输出格式:

T行,每行一个整数表示答案。

输入输出样例

输入样例#1:

2
1 2 5
2 1 5

输出样例#1:

3
3

题解

卢卡斯定理模板题
卢卡斯定理:
CnmCn/pm/pCn%pm%p(modp)
n,m很大,而P很小的使用
递归计算即可

#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;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 dnf深渊宝珠出了怎么办 吞噬魔4个球吃了怎么办 dnf没有支援兵了怎么办 家里没通天然气怎么办 苹果6p16g不够用怎么办 魅蓝手机内存不够用怎么办 3dmax灯光全黑怎么办 高压15o低压1oo怎么办 源码一位乘法中c怎么办 怀孕搬了重东西怎么办 深蹲力量不涨怎么办 ps4连接显示器分辨率低怎么办 大疆失去链接后怎么办 脑袋被锤了几拳怎么办 华为手机变板砖怎么办 电脑网页打开很慢怎么办 网页加载速度太慢.怎么办 cad字显示不出来怎么办 dell笔记本打不开机怎么办 手机系统界面已停止运行怎么办 大石退出菊丸怎么办 word空白页面突然变大了怎么办 高速上车胎爆了怎么办 没有定速巡航跑长途怎么办 惠普笔记本驱动无法安装怎么办 狙击手遇到热追踪导弹怎么办 做完卷腹脖子疼怎么办 医疗设备销售遭遇瓶颈怎么办 给顾客加油加超了怎么办 卡密码输错两次怎么办 擤鼻涕耳朵会响怎么办 鼻子里有血丝是怎么办 怀孕8周上火了怎么办 鼻炎犯了鼻涕流不停怎么办 擤鼻涕眼睛肿了怎么办 感冒咳嗽鼻子不通气怎么办 宝宝感冒不会擤鼻涕怎么办 新生儿鼻腔里有鼻涕怎么办 宝宝鼻腔有鼻涕出不来怎么办 怀孕的人感冒了怎么办 孕37周感冒咳嗽怎么办