组合

给出组合数C(n,m), 表示从n个元素中选出m个元素的方案数。例如C(5,2) = 10, C(4,2) = 6.可是当n,m比较大的时候,C(n,m)很大!于是xiaobo希望你输出 C(n,m) mod p的值!

Input

输入数据第一行是一个正整数T,表示数据组数 (T <= 100) 接下来是T组数据,每组数据有3个正整数 n, m, p (1 <= m <= n <= 10^9, m <= 10^4, m < p < 10^9, p是素数)

Output

对于每组数据,输出一个正整数,表示C(n,m) mod p的结果。

Sample Input

2
5 2 3
5 2 61

Sample Output

1
10
//卢卡斯定理求组合数
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
//快速幂
ll fastPow(ll a,ll b,ll p)
{ll ret=1;while(b){if(b&1)ret=(ret*a)%p;a=(a*a)%p;b>>=1;}return ret;
}
//费马小定理求逆元fastPow(a,b-2,b)
ll c(ll n,ll m,ll p)
{if(m==0)    return 1;//if(m>n-m) m=n-m;ll up=1,down=1;for(int i=1;i<=m;i++){up=(up*(n-i+1))%p;down=(down*i)%p;}return up*fastPow(down,p-2,p)%p;
}
//求C(n,m)%p
ll lucas(ll n,ll m,ll p)
{if(m==0)    return 1;return c(n%p,m%p,p)*lucas(n/p,m/p,p)%p;
}
int main()
{int T;ll n,m,p;scanf("%d",&T);while(T--){scanf("%I64d%I64d%I64d",&n,&m,&p);//scanf("%lld%lld%lld",&n,&m,&p);//错误//getFact(p);printf("%I64d\n",lucas(n,m,p));}return 0;
}

FZU2020 lucas定理求解组合数相关推荐

  1. Lucas定理及组合数取模

    首先给出这个Lucas定理: A.B是非负整数,p是质数.AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]. 则组合数C(A,B)与C(a[n],b[n] ...

  2. Lucas定理——定义、证明、实现、运用

    文章目录 什么是Lucas定理 证明Lucas定理 Lucas定理求解组合数的C++实现 什么是Lucas定理 这是一个有助于分解组合数来求解的定理,适合模数小,数字大的问题. 有质数 p p p,对 ...

  3. [Swust OJ 247]--皇帝的新衣(组合数+Lucas定理)

    题目链接:http://acm.swust.edu.cn/problem/0247/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...

  4. Lucas定理扩展Lucas

    Lucas定理 求解 C n m m o d    p C_n^m\mod p Cnm​modp (p为素数) 蒟蒻不会证明,记着递推公式就好=_= L u c a s ( n , m ) = C ( ...

  5. FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2238 Daxia & Wzc's problem Accept: 0    Submit: 0 Time Limit ...

  6. Lucas 定理学习笔记

    Lucas 定理 Lucas 定理用于求解大组合数取模的问题,其中模数必须为素数.正常的组合数运算可以通过递推公式求解(详见排列组合),但当问题规模很大,而模数是一个不大的质数的时候,就不能简单地通过 ...

  7. Lucas定理与大组合数的取模的求法总结

    Lucas定理与大组合数的取模的求法总结 分类: ACMer 数学 2012-03-11 09:38  1219人阅读  评论(0)  收藏  举报 c 首先给出这个Lucas定理: A.B是非负整数 ...

  8. 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)

    J. Ceizenpok's formula time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  9. BZOJ4737 组合数问题 【Lucas定理 + 数位dp】

    题目 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3)三个物品中选择两个物品可以有( 1,2),(1,3),(2,3)这三种选择方法.根据组合数的定义,我们可以给 ...

最新文章

  1. 解决Could not open requirements file: [Errno 2] No such file or directory: ‘requirements.txt‘问题
  2. ssh登陆aix后,退格键无法删除
  3. 高等数学:第八章 多元函数微分法及其应用(3)方向导数 梯度 多元函数的极值
  4. 实战 es6_Node.JS实战65:ES6新特性:箭头函数
  5. Vboxmanage改动uuid报错的解决的方法
  6. golang - strings
  7. 继iptables之后的新一代包过滤框架是nftables
  8. jQuery图片垂直滚动焦点图
  9. java error_java基础:Error和Exception
  10. 0宽字符隐藏文本加密及原理
  11. 用springboot对接支付宝支付接口的详细开发步骤总结
  12. 【调剂】关于开通上海第二工业大学2022年硕士研究生招生预调剂系统的通知
  13. Android:通过systrace进行性能分析及使用-详细
  14. 计算机表格制作中这么打字,excel表格先打字还是先制表?
  15. python读取json文件,大批量写入mongo
  16. 特征工程系列(一):特征工程的概念/特征的处理
  17. 在线解析xml,json数据的网址
  18. 2021年煤矿采煤机(掘进机)操作考试题及煤矿采煤机(掘进机)操作报名考试
  19. ASP程序所使用的几种脚本语言
  20. 轻量级浏览器NetSurf学习(九)-- 如何基于NetSurf打造自己的浏览器

热门文章

  1. workflow GetListIdByName 获取表名
  2. web 表单,脚本验证
  3. js错误:对象不支持此属性或方法
  4. 使用wireshark抓取wcf生成的soap消息
  5. python tips(持续更新)
  6. [转]多级配方处理的简洁方式
  7. USACO 3.1 Score Inflation(完全背包 模版)
  8. TechCrunch Disrupt 2011 创业大赛冠军获得者Shaker,酒吧版Facebook
  9. 小米redmi_小米Redmi小爱触屏音箱8,不仅屏幕大,而且功能多,价格更超值
  10. codematic2连接mysql失败_怎么连接oracle数据库