传送门:Chat Group(gym101775A)

题意:一个宿舍中又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 ;
}

Chat Group gym101775A(逆元,组合数)的更多相关文章

  1. A - Chat Group Gym-101775A

    题目连接:https://codeforces.com/gym/101775/problem/A 题解:就是累加组合数 但是直接由K累加到N肯定会TLE ,所以我们不妨判断不能组成group的情况,即 ...

  2. Gym - 101775A Chat Group 组合数+逆元+快速幂

    It is said that a dormitory with 6 persons has 7 chat groups ^_^. But the number can be even larger: ...

  3. Gym 101775A - Chat Group - [简单数学题][2017 EC-Final Problem A]

    题目链接:http://codeforces.com/gym/101775/problem/A It is said that a dormitory with 6 persons has 7 cha ...

  4. 组合数+逆元 A - Chat Group Gym - 101775A

    题目链接:https://cn.vjudge.net/contest/274151#problem/A 具体思路:我们可以先把所有的情况算出来,为2^n.然后不合法的情况减去就可以了.注意除法的时候要 ...

  5. UVALive 7040 Color (容斥原理+逆元+组合数+费马小定理+快速幂)

    题目:传送门. 题意:t组数据,每组给定n,m,k.有n个格子,m种颜色,要求把每个格子涂上颜色且正好适用k种颜色且相邻的格子颜色不同,求一共有多少种方案,结果对1e9+7取余. 题解: 首先可以将m ...

  6. Bzoj 1856: [Scoi2010]字符串 卡特兰数,乘法逆元,组合数,数论

    1856: [Scoi2010]字符串 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1194  Solved: 651[Submit][Status][ ...

  7. HDU 6114 Chess【逆元+组合数】(组合数模板题)

    <题目链接> 题目大意: 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子.一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使 ...

  8. HDU4869:Turn the pokers(快速幂求逆元+组合数)

    题意: 给出n次翻转和m张牌,牌相同且一开始背面向上,输入n个数xi,表示xi张牌翻转,问最后得到的牌的情况的总数. 思路: 首先我们可以假设一开始牌背面状态为0,正面则为1,最后即是求ΣC(m,k) ...

  9. The 2018 ACM-ICPC Asia Qingdao Regional Contest(部分题解)

    摘要: 本文是The 2018 ACM-ICPC Asia Qingdao Regional Contest(青岛现场赛)的部分解题报告,给出了出题率较高的几道题的题解,希望熟悉区域赛的题型,进而对其 ...

随机推荐

  1. GitHub 高速上手 ---- 创建密钥,连接

    首先要在GitHub上创建一个帐号,因为本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以要在本地生成一个私钥和一个密钥 命令,后面跟的邮箱.要跟你自己的:增加输出的位置:能够不用设置 ...

  2. 小贝_mysql sql语句优化过程

    sql语句优化 一.SQL优化的一般步骤 (1).通过show status命令了解各种SQL的运行频率. (2).定位运行效率较低的SQL语句-(重点select) (3).通过explain分析低 ...

  3. PHP数字左侧自动补零

    1.输出数字为001,002... <?php $number=0; if($number<100) { $number=$number+1; $txt=sprintf("%03 ...

  4. regEx in Groovy

    // 使用正则 得到非纯XML文件中的信息 // Response 经常得到的不是纯XML def pattern = ~/(<NewDataSet>).*(<\/NewDataSe ...

  5. AbstractRoutingDataSource动态选择数据源

    当我们项目变大后,有时候需要多个数据源,接下来我们讲一种能等动态切换数据源的例子. 盗一下图: 单数据源的场景(一般的Web项目工程这样配置进行处理,就已经比较能够满足我们的业务需求) 多数据源多Se ...

  6. [Swift通天遁地]五、高级扩展-(13)图片资源本地化设置:根据不同的语言环境显示不同语言版本图片

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. array_column()函数兼容低版本

    array_column 用于获取二维数组中的元素(PHP 5.5新增函数),但我们有时候需要在低版本的 function i_array_column($input, $columnKey, $in ...

  8. 题解报告:poj 3233 Matrix Power Series(矩阵快速幂)

    题目链接:http://poj.org/problem?id=3233 Description Given a n × n matrix A and a positive integer k, fin ...

  9. Android内存管理(10)MAT: 基本教程

    原文: http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fgettingstarted%2Fbasic ...

  10. Emoji过滤

    private static boolean isNotEmojiCharacter(char codePoint) { return (codePoint == 0x0) || (codePoint ...