【题目链接】

点击打开链接

【算法】

对问题稍加分析后,发现其实要求的就是 :

C(N,K) + C(N,K+1) + C(N,K+2) + ... + C(N,N)

因为N最大10^9,K最大10^5,很显然,我们不可能通过暴力或杨辉三角等来解决此题

我们发现 :

C(N,K) + C(N,K+1) + C(N,K+2) + ... + C(N,N)

= C(N,1) + C(N,2) + C(N,3) + ... + C(N,N) - C(N,1) - C(N,2) - ... - C(N,K-1)

=  2^N - 1 - C(N,1) - C(N,2) - ... - C(N,K-1)

同时,我们可以推出 : C(N,K) = C(N,K-1) * (N - K + 1) / K

我们可以通过这个递推式在O(K)的时间求出C(N,1)..C(N,K-1)

但是问题还没有完,由于这个式子要模10^9+7

因此在计算 C(N,K-1) * (N - K + 1) / K时,除法运算会变得十分棘手,我们怎么解决这个问题呢?

其实很简单,(a / b) mod P = (a * b的逆元)mod P,有了这个小结论,问题就迎刃而解了!

关于这个结论,具体的证明我就不给出了,详见这篇文章 :

http://blog.csdn.net/star_weeper/article/details/52973879

【代码】

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const ll MOD = 1e9 + ; ll i,N,K,a=,b=,ans; template <typename T> inline void read(T &x) {
ll f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = x * + c - '';
x *= f;
} template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
} template <typename T> inline void writeln(T x) {
write(x);
puts("");
} inline ll pow_mod(ll a,ll n) {
ll ans;
if (!n) return ;
if (n == ) return a;
ans = pow_mod(a,n>>);
ans = ans * ans % MOD;
if (n & ) ans = ans * a % MOD;
return ans;
} inline void exgcd(ll a,ll b,ll &x,ll &y) {
if (b == ) {
x = ;
y = ;
} else {
exgcd(b,a%b,y,x);
y -= a / b * x;
}
} inline ll inv(ll a) {
ll x,y;
exgcd(a,MOD,x,y);
return (x % MOD + MOD) % MOD;
} int main() { read(N); read(K); ans = pow_mod(,N) - ; for (i = ; i < K; i++) {
a = (a * i) % MOD;
b = ((b % MOD) * ((N - i + ) % MOD)) % MOD;
ans = (ans - (b * inv(a)) % MOD) % MOD;
if (ans < ) ans += MOD;
} writeln(ans); return ; }

【扬中集训DAY1T1】 微信群的更多相关文章

  1. 一行实现QQ群组头像,微信群组,圆角等效果. 并支持url直接加载图片

    说点题外话. Coding中我们总是经历着这么几个过程. 学会使用: 不管是API也好, 开源库也好. 总是在最开始的学会去用. 了解实现原理: 可能会因为一些不兼容, 代码的异常状态的处理不够完美等 ...

  2. 今天微信群需要人家通过吗?是微信bug吗

    今天遇到微信群拉人的问题,所以来和大家取经,刚开始拉人一下就拉进去了,后来拉的需要人家通过,今天朋友些也帮我拉人也是这样的,所以想问下微信群扩容的问题.晚上有位朋友跟我说一次拉十个人,不能拉多,这样就 ...

  3. 微信群之Java技术红包问答

    缘起 年前公司拿到B+轮融资,相应的在战略上也做了很大的调整,毕竟B轮要做的事情不仅仅是增加用户数,于是乎公司在2017年的开头补充了一部分技术团队,这次人员选择上主要针对一些工作经验在1-2年的技术 ...

  4. 基于itchat的微信群聊小助手基础开发(一)

    前段时间由于要管理微信群,基于itchat开发了一个简单的微信机器人 主要功能有: 图灵机器人功能 群聊昵称格式修改提示 消息防撤回功能 斗图功能 要开发一个基于itchat的最基本的聊天机器人,在g ...

  5. python-itchat 统计微信群、好友数量的实例

    今天小编就为大家分享一篇python-itchat 统计微信群.好友数量,及原始消息数据的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧   效果:   好友: # 获取自己的用 ...

  6. 环境与工具1:微信群刷屏 | itchat

    在微信群里面,"刷屏"的行为是被谴责的,伴随着"快发红包道歉"与"送飞机票"的出现.那如果小程硬是要做到"刷屏"来验证自 ...

  7. 【组合数】微信群 @upcexam6016

    时间限制: 1 Sec 内存限制: 128 MB 题目描述 众所周知,一个有着6个人的宿舍可以有7个微信群(^_^,别问我我也不知道为什么),然而事实上这个数字可以更大,因为每3个或者是更多的人都可以 ...

  8. 分享Azure DevOps技术,来微信群吧!

    现在QQ用户越来越少,基本上都转移到微信上了. 讨论问题,动不动就来一个微信群.下面这样几百人的微信群,专门讨论Azure DevOps (TFS)技术,你加入了么? 还等什么,扫描吧!

  9. 微信群的id

    今天网速慢了,竟然把微信群的id卡出来了,记录一下. 格式应该是一个像QQ群一样的数字,然后+@chatroom 看图!   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论.

随机推荐

  1. jquery的固定定位效果

    今天做了个固定定位的效果.比如对导航需要进行固定定位效果: 当没有滚动到导航下面,导航正常显示. 当滚动到导航下面,导航就固定到顶部. 这个效果使用了jquery的方法实现,具体思路为: 1)首先获取 ...

  2. Hadoop三种模的安装配置过程

    JDK+Hadoop安装配置.单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running sys ...

  3. .NET CORE TOKEN 权限验证

    原文:.NET CORE TOKEN 权限验证 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012601647/article/details/ ...

  4. 使用datatables实现列宽设置、水平滚动条、显示某列部分内容

    示例 1.//使用 columnDefs 给列设置宽度 $('#example').DataTable( { "columnDefs": [ //给第一列指定宽度为表格整个宽度的2 ...

  5. STL algorithm算法max,max_elements(33)

    max原型: std::max C++98 C++11 C++14 default (1) template <class T> const T& max (const T& ...

  6. STL 笔记(二) 关联容器 map、set、multimap 和 multimap

    STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可 ...

  7. Screen 状态栏配置

    http://havee.me/linux/2010-08/screen-status-bar.html Screen 状态栏配置 GNU 的 screen 是一个很好的工具.如果需要经常或者大量的登 ...

  8. 初学c的一点体会

    自学C语言的一些体会1 从最初什么都不知道变成知道一点,一转眼就过去了三个多月,最开始只是刚进大学,感觉太闲了不太好就决定学点什么,于是就到图书馆逛了一圈找找看有什么有趣的书可以看看,刚好就在书架上看 ...

  9. android studio 非法字符: &#39;\ufeff&#39; 解决方式

    今天发现一个问题,就是从其它地方拷贝的代码到AS项目里面,木有语法 错误,可是就是执行不起来,老是报错"非法字符: '\ufeff' ",郁闷非常久.木有看到这个字符.最后查询了这 ...

  10. 三分钟教你学Git(十四) 之 线下传输仓库

    有时候还有一个人不能从远程直接clone仓库或者说由于非常大,clone非常慢或其他原因.我们能够使用bundle命令将Git仓库打包,然后通过U盘或者是其他介质拷贝给他,这样他拿到打包好的仓库后能够 ...