问题 A: 微信群

时间限制: 1 Sec   内存限制: 128 MB
提交: 272   解决: 67
[ 提交][ 状态][ 讨论版][命题人: admin]

题目描述

众所周知,一个有着6个人的宿舍可以有7个微信群(^_^,别问我我也不知道为什么),然而事实上这个数字可以更大,因为每3个或者是更多的人都可以组建一个群,所以6个人最多可以组建42个不同的群。
现在,已知一间宿舍有N个人,并且每至少K个人都可以组建一个微信群,那么他们最多可以组建多少个不同的微信群?

输入

一行两个整数N和K,表示宿舍中的人数和最少能够组建微信群的人数

输出

一行一个整数,即最多能组建多少个不同的微信群,由于这个数字很大,请输出对10^9+7求余后的结果

样例输入

6 3

样例输出

42

提示

对于30%的数据,3<=N<=10^3
对于60%的数据,3<=N<=10^6
对于100%的数据,3<=N<=10^9,3<=K<=10^5

考点:快速幂+组合数

参考代码:

#include<stdio.h>
#include<algorithm>
#define llong long long
using namespace std;
const llong MOD=1e9+7;llong pow(llong x, llong n)  //快速幂
{llong res = 1;while(n){if(n & 1) res =res*x%MOD;x = x * x % MOD;n >>= 1;}return res;
}//组合数模板
llong p[100005],f[100005];//p为阶乘数组,f为阶乘的逆元
void init()//预处理
{p[0]=1;for (int i=1; i<=100000; ++i) //计算阶乘p[i]=p[i-1]*i%MOD;f[0]=1;for (int i=1; i<=100000; ++i) //计算逆元f[i]=pow(p[i],MOD-2);return ;
}
llong comb(int n,int m)//计算组合数
{return (f[m]*f[n-m])%MOD*p[n]%MOD;
}
//分子---->  n!
//分母---->  m!*(n-m)!   计算逆元后相乘得到C(n,m)的组合数int main()
{llong k,n;while(~scanf("%lld%lld",&n,&k)){llong ans=1;llong sum=pow(2,n);//  组合数总和!!!C(n,0)+C(n,1)+......+C(n,n)=2^nllong tmp=n;for(int i=2; i<=k; i++){ans=(ans+tmp)%MOD;tmp=((tmp*(n-i+1))%MOD*pow(i,MOD-2))%MOD;//线性计算组合数,分子*n-i+1,分母*i}ans=(sum-ans+MOD)%MOD;//减法运算取模,加上MOD再对MOD取模printf("%lld\n",ans);}return 0;
//因为题目中计算K到N(1e9) 的组合数计算会超时,因此利用n的组合数总和2^n
//减去从0到k-1的组合数之和(较短段),得到后半段k到n组合数之和(较长段)
}

2018年ACM俱乐部个人训练赛第二十一场.A.微信群相关推荐

  1. 17暑期ACM俱乐部个人训练赛第1场 (石油oj) 7.24号

    //暑假训练第一场,孤军奋斗,事后各种补题,(ps,说实话,时间点卡的不是很好,12点到17点, 没有午觉,大脑犯困, 各种困,各种累,再者,自己也慢慢的发现 精力开始不放在算法上了, 很多时候在做其 ...

  2. 中国石油大学ACM俱乐部开放训练赛

    文章目录 中国石油大学ACM俱乐部开放训练赛 A. sciorz画画(凸多边形最优三角型剖分,区间DP) B. 奎奎发红包(贪心) C. 关于我转生变成史莱姆这档事(DFS) F. 求和(矩阵构造+矩 ...

  3. 个人训练赛第二十场:对撞

    问题 C: 对撞 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 小明发明了一个数字对撞机,两个位数相同的整数可以进行碰撞.碰撞过程中,将两个 整数的每一位进行比较,较 ...

  4. 北方大学 ACM 多校训练赛 第四场 题解

    A. 恶魔包毁灭世界 已知一张二分图,问哪些边是二分图的可行边? 先跑最小流,再把残余网络建图,几个重要结论是: ·最小割的可行边(满流&&2点不在一个SCC中) ·最小割的必行边(可 ...

  5. 北方大学 ACM 多校训练赛 第五场(D. 节操大师 - 二分)

    Description MK和他的小伙伴们(共n人,且保证n为2的正整数幂)想要比试一下谁更有节操,于是他们组织了一场节操淘汰赛.他们的比赛规则简单而暴力:两人的节操正面相撞,碎的一方出局,而没碎的一 ...

  6. Contest1819 - 2019年我能变强组队训练赛第十一场(补题场)

    赛后总结 菜 问题 E: Faulhaber's Triangle 问题 E: Faulhaber's Triangle 单纯模拟题,模拟分数加法 代码 #include <bits/stdc+ ...

  7. Contest1819 - 2019年我能变强组队训练赛第十一场

    题目: The King's Ups and Downs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  8. 19级算法训练赛第七场

    19级算法训练赛第七场 传送门:https://vjudge.net/contest/362412#problem/J A - 程序设计:合并数字 蒜头君得到了 n 个数,他想对这些数进行下面这样的操 ...

  9. 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...

最新文章

  1. Matrix Completion with Noise
  2. Qt QByteArray 转换 QString QT5.12.7
  3. thymealf 高级用法_Thymeleaf
  4. 燃气灶电气线路图及原理_一位造价大神的电气工程造价知识整理笔记_深圳电气造价预算培训要多少钱...
  5. android PowerManager 权限问题
  6. 西门子g120c面板参数设定_西门子PCS7模拟量单位设置
  7. 捷信达会员管理系统SQL语句相关
  8. 中国用量子计算机仿生生物,中国科学技术大学研制一种可持续生物合成仿生多层级太阳能蒸汽发生器...
  9. 建立 arm-linux 交叉编译环境
  10. linux readelf,Linux readelf命令使用
  11. [系统安装]_VirtualBox + slackware64-15.0-install-dvd + fiuxbox 窗口管理器 + 终端界面鼠标支持
  12. nodejs读取服务器json文件,如何使用Node.js读取JSON文件
  13. 亲邻门禁卡复制数据分析
  14. 通俗易懂的方式讲解最大流和最小割问题
  15. springboot 发送短信
  16. linux sticky权限,Linux基础入门篇之文件高级权限suid,sgid,sticky
  17. 3600万中国人在抖音“上清华”。
  18. 协议的起始位,停止位
  19. 编程中的命名方式和常用命名名称
  20. Android 最小化界面

热门文章

  1. Oracle 12c 自带的SQL Developer新建连接出现的问题:Got minus one from a read call,connect lapse 60018 ms,....(已解决)
  2. java -xms_启动JAVA程序时,参数-Xms及Xmx有什么用?
  3. OpenCV——PS 滤镜, 曝光过度
  4. 时间:UTC时间、GMT时间、本地时间、Unix时间戳
  5. 黑客总是如此神秘,他们是怎样成为虚拟世界的主人?
  6. Redis命令合集和设计场景
  7. Office Tool Plus下载.NET无效
  8. 发生错误,需要终止调试,HRESULT=0x8000ffff. ErrorCode = 0x0
  9. 私家QQ无本生利赚钱法
  10. 怎么在指定文件夹打开cmd