组合数求模要用逆元,用到了扩展的欧几里得算法。

#include<cstdio>
int mod;
typedef long long LL; void gcd(LL a,LL b,LL &d,LL &x,LL &y)
{
if(!b) {d=a;x=1;y=0;}
else { gcd(b,a%b,d,y,x); y-=x*(a/b);} } LL inv(LL a,LL n)
{
LL d,x,y;
gcd(a,n,d,x,y);
return d==1? (x+n)%n:-1;
} int c(LL n,LL m)
{
if(n==0||n<m) return 0;
if(m>n/2) m=n-m;
LL sum2=1,sum1=1;
for(LL i=n-m+1; i<=n; i++)
sum1= sum1*i%mod;
for(LL i=1; i<=m; i++)
sum2= sum2*i%mod;
LL ans;
ans=sum1*inv(sum2,mod) %mod;
return ans;
} int main()
{
int n,m,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&mod);
printf("%d\n",c(n,m));
} }

最新文章

  1. NiceMark——我的Markdown编辑器
  2. MAC 设置环境变量path的几种方法
  3. 今天发现之前瑞乐做的登录和注册居然都是用的get请求,瞬间出了一身冷汗.
  4. od
  5. jQuery中大于gt和小于lt
  6. open Session In View和过滤器配置
  7. iOS学习笔记-精华整理
  8. Codeforces Round #311 (Div. 2) D. Vitaly and Cycle 图论
  9. C#迭代语句
  10. 浅谈C#委托和事件
  11. window窗体程序意外崩溃,EventType clr20r3错误的解决方法
  12. MYSQL中 ENUM 类型的详细解释
  13. 深入了解Android蓝牙Bluetooth——《基础篇》
  14. Java 小记 — Spring Boot 注解
  15. CF666E Forensic Examination [后缀自动机,线段树合并]
  16. springboot从入门到精通
  17. [C#.net]未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
  18. C/C++杂记:虚函数的实现的基本原理
  19. PHP优化思路
  20. 关于使用AzureCli登陆提示SSLError的错误解决方案

热门文章

  1. js -- canvas img 封装
  2. 120.VS调试技巧
  3. EF搭建数据库
  4. Easy mock - 安装配置和基本使用
  5. 深入具体解释SQL中的Null
  6. Android线程池(二)——ThreadPoolExecutor及其拒绝策略RejectedExecutionHandler使用演示样例
  7. 前台技术--div的隐藏与显示
  8. 优化HTML代码的多种技巧
  9. 码农的救赎:使用Github Pages搭建博客
  10. Logstash整合Elasticsearch