Chat Group gym101775A(逆元,组合数)
2024-08-26 00:24:10
题意:一个宿舍中又n个人,最少k(k >= 3)个人就可以建一个讨论组,问最多可以建多少个不同的讨论组。
思路:求组合数的和,因为涉及除法取余,所以要求逆元来解题。
虽然之前看到过有关逆元的知识,但是一直没有弄明白逆元的应用。嗯~~挖下的坑终于把自己给坑了。这次认栽!!
最终的结果是:C(n,k)+C(n,k+1)+.......+C(n,n) = 2^n - ( C(n,0) + C(n,1) + C(n,2) + ......+C(n,k-1)
(a / b)%mod = a % mod *(b关于模mod的逆元);
复习逆元相关知识:Click hear
代码:
费马小定理求逆元法:
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+;
const int maxn = 1e5;
typedef long long ll;
int n,k;
ll qpow(ll a,ll b)
{
ll res = ;
while(b)
{
if(b&)
res = res*a%MOD;
a = a*a%MOD;
b>>=;
}
return res;
} int main()
{
int T,cnt = ;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
ll c = ;
ll sum = ;
for(int i = ; i<=k-; i++)
{
c = ((c*(n-i+)%MOD)*qpow(i,MOD-))%MOD;
sum = (sum + c)%MOD;
}
ll M = qpow(,n) - ;
printf("Case #%d: %lld\n",++cnt,(M - sum + MOD)%MOD);//将结果转为正数
}
return ;
}
线性求逆元:
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+;
const int maxn = 1e5;
typedef long long ll;
int n,k;
ll qpow(ll a,ll b)
{
ll res = ;
while(b)
{
if(b&)
res = res*a%MOD;
a = a*a%MOD;
b>>=;
}
return res;
}
ll inv[maxn]; void getInv()
{
inv[] = ;
for(int i = ; i<maxn; i++)
{
inv[i] = (MOD-MOD/i)*inv[MOD%i]%MOD;
}
} int main()
{
int T,cnt = ;
scanf("%d",&T);
while(T--)
{
getInv();
scanf("%d%d",&n,&k);
ll c = ;
ll sum = ;
for(int i = ; i<=k-; i++)
{
c = (c*(n-i+)%MOD*inv[i])%MOD;
sum = (sum + c)%MOD;
}
ll M = qpow(,n) - ;
printf("Case #%d: %lld\n",++cnt,(M - sum + MOD)%MOD);
}
return ;
}
最新文章
- H5 video的使用
- 部署 OpenStack VirtualBox
- Java基础(60):Java打包生成Jar和Javadoc说明文档,以及在另外的工程中导入和使用自己的Jar
- JMS的常用方法
- 使用ORACLE SQL Tuning advisor快速优化低效的SQL语句
- Servlet API中文版
- 【4】学习JS 数据结构与算法笔记
- jsp fmt标签详解
- Android 实现UI设计
- VMware Workstation 14 Pro永久激活密钥
- OpenCV 填充(ROI)+模糊操作
- [Web 前端 ] Jquery attr()方法 获取或修改 对象的属性值
- purge recyclebin之后dba_segments仍然有BIN$段
- poj 3667 线段树
- 使用jQuery动态改变图片显示大小
- 《图解HTTP》书摘
- http头部信息
- Windows10+Ubuntu双系统安装[
- 基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成
- 网络设备之net_device结构与操作
热门文章
- JSP开发学习参考文章
- 布局技巧4:使用ViewStub
- IDEA Spark程序报错处理
- Linux VPS上安装KDE, Gnome和VNC
- [Swift通天遁地]七、数据与安全-(19)使用Swift实现原生的SHA1加密
- AcWing算法基础1.5
- C 语言程序员必读的 5 本书
- 接口管理功能全面增强!EOLINKER EPC 5.0.9版本更新:支持LDAP用户系统、加入更多项目统计图表、强化测试/自动化测试功能等
- BZOJ 3779 LCT 线段树 DFS序 坑
- Spring思维课程导图——bean得实例化和bean的管理