题目:http://acm.hdu.edu.cn/showproblem.php?pid=3037

卢卡斯定理模板——大组合数取模

#include<iostream>
#include<cstdio>
using namespace std;
long long t,n,m,p,s;
long long mi(long long a,long long k)
{
long long s=;
while(k)
{
if(k&)s=s*a%p;
k>>=;
a=a*a%p;
}
return s;
}
long long getc(long long n,long long m)
{
if(n<m)return ;
long long s1=;
long long s2=;
if(n-m<m)m=n-m;
for(long long i=,j=n;i<=m;j--,i++)
{
s1=s1*j%p;
s2=s2*i%p;
}
return s1*mi(s2,p-)%p;
}
long long lucas(long long n,long long m)
{
if(!m)return ;
return lucas(n/p,m/p)*getc(n%p,m%p)%p;
}
int main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld%lld%lld",&n,&m,&p);
printf("%lld\n",lucas(n+m,n));
}
return ;
}

#include<iostream>
#include<cstdio>
using namespace std;
long long t,n,m,p,s,js[]={};
long long mi(long long a,long long k)
{
long long s=;
while(k>)
{
if(k&)s=s*a%p;
k>>=;
a=a*a%p;
}
return s;
}
long long getc(long long n,long long m)
{
if(n<m)return ;
if(n-m<m)m=n-m;
return js[n]*mi(js[m],p-)%p*mi(js[n-m],p-)%p;
}
long long lucas(long long n,long long m)
{
if(!m)return ;
return lucas(n/p,m/p)*getc(n%p,m%p)%p;
}
int main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld%lld%lld",&n,&m,&p);
for(int i=;i<=p;i++)
js[i]=js[i-]*i%p;
printf("%lld\n",lucas(n+m,n));
}
return ;
}

hdu3037——卢卡斯定理的更多相关文章

  1. 【BZOJ4403】序列统计(组合数学,卢卡斯定理)

    [BZOJ4403]序列统计(组合数学,卢卡斯定理) 题面 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取 ...

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

    题目描述 给定\(n,m,p(1≤n,m,p≤10^5)\) 求 \(C_{n+m}^m mod p\) 保证\(P\)为\(prime\) \(C\)表示组合数. 一个测试点内包含多组数据. 输入输 ...

  3. 【数论】卢卡斯定理模板 洛谷P3807

    [数论]卢卡斯定理模板 洛谷P3807 >>>>题目 [题目] https://www.luogu.org/problemnew/show/P3807 [输入格式] 第一行一个 ...

  4. 【XSY2691】中关村 卢卡斯定理 数位DP

    题目描述 在一个\(k\)维空间中,每个整点被黑白染色.对于一个坐标为\((x_1,x_2,\ldots,x_k)\)的点,他的颜色我们通过如下方式计算: 如果存在一维坐标是\(0\),则颜色是黑色. ...

  5. 【CTSC2017】【BZOJ4903】吉夫特 卢卡斯定理 DP

    题目描述 给你一个长度为\(n\)的数列\(a\),求有多少个长度\(\geq 2\)的不上升子序列\(a_{b_1},a_{b_2},\ldots,a_{b_k}\)满足 \[ \prod_{i=2 ...

  6. 卢卡斯定理&扩展卢卡斯定理

    卢卡斯定理 求\(C_m^n~mod~p\) 设\(m={a_0}^{p_0}+{a_1}^{p_1}+\cdots+{a_k}^{p_k},n={b_0}^{p_0}+{b_1}^{p_1}+\cd ...

  7. [Sdoi2010]古代猪文 (卢卡斯定理,欧拉函数)

    哇,这道题真的好好,让我这个菜鸡充分体会到卢卡斯和欧拉函数的强大! 先把题意抽象出来!就是计算这个东西. p=999911659是素数,p-1=2*3*4679*35617 所以:这样只要求出然后再快 ...

  8. 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)

    洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...

  9. 【UOJ#275】组合数问题(卢卡斯定理,动态规划)

    [UOJ#275]组合数问题(卢卡斯定理,动态规划) 题面 UOJ 题解 数据范围很大,并且涉及的是求值,没法用矩阵乘法考虑. 发现\(k\)的限制是,\(k\)是一个质数,那么在大组合数模小质数的情 ...

随机推荐

  1. HeaderExchangeClient

    HeaderExchangeClient 注释是DefaultMessageClient,类中定义了心跳定时器HeaderExchangeChannel 发送请求HeaderExchangeHandl ...

  2. spring boot 学习(十)SpringBoot配置发送Email

    SpringBoot配置发送Email 引入依赖 在 pom.xml 文件中引入邮件配置: <dependency> <groupId>org.springframework. ...

  3. css 设置背景色

    设置背景图 background:url($!{rc.contextPath}/assets/images/bady/date.png)repeat 50px center background:ur ...

  4. SQL Server 数据库获取架构信息

    得到数据库存储过程列表: select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name ...

  5. [转]MVC Html.AntiForgeryToken() 防止CSRF攻击

    [转]MVC Html.AntiForgeryToken() 防止CSRF攻击 本文转自:http://blog.csdn.net/luck901229/article/details/8261640 ...

  6. 未能加载文件或程序集“Microsoft.Office.Interop.Excel

    解决方法:未能加载文件或程序集“Microsoft.Office.Interop.Excel...”   2010-07-25 08:06:15   来源:源码之家 站长整理    [大 中 小]   ...

  7. html头标签meta实现refresh重定向

    <html> <head> <meta http-equiv="content-type" content="text/html; char ...

  8. Installing MIB in Ubuntu and Solving the Error “SNMP Cannot Find Module …”

    Has noticed an error after executing the command snmpwalk with the indication of MIB instead of OID: ...

  9. Linux:查看进程运行时间

    查看进程运行时间 应用ps命令,加选项-Ao,加参数,最后过滤. ps -Ao pid,tty,user,stime,etime,comm,args| grep firefox pid:进程ID tt ...

  10. HDU 1588 Gauss Fibonacci(矩阵快速幂)

    Gauss Fibonacci Time Limit: 3000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) ...