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