添加好友(快速幂取模)
来源:互联网 发布:郑州中大门网络 编辑:程序博客网 时间:2024/06/06 18:23
“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛D题——添加好友
描述
Tony最近喜欢上了龙之谷游戏,所以他想叫上他的好友组建一个公会来一起享受这款游戏。Tony一共有n个好友,他可以叫上任意k(1<=k<=n)个好友来组建公会,并且所有好友都会答应他的请求。问Tony一共可以有多少种方案组建这个公会?
只要不是完全相同的人组建的方案视为不同方案,并且Tony至少要叫上一个人。
描述
多组输入,每组一行,输入一个正整数n(1<=n<=1000000000)。输出
每组输出一行,输出方案数。(对1000000007取膜)样例输入
2样例输出
3
思路:首先由题目分析知道,方案数是 C(n,1)+C(n,2)+…+C(n,n),第一时间想到的是pow(2,n)-1;但是由于n的范围是(1<=n<=1000000000),所以用pow不但慢而且会溢出。
再一想直接用快速幂的模板就好。
快速幂模板,表示a的b次方对p取模
int fast(int a,int b,int p) { long long a1=a,t=1; while(b>0) { if(b&1) t=(t%p)*(a1%p)%p; a1=(a1%p)*(a1%p)%p; b/=2; } return (int)(t%p); }
AC代码
#include<iostream> #include<cstdio> #include<vector> #include<set> #include<algorithm> #include<cmath> using namespace std; int fast(int a,int b,int p) { long long a1=a,t=1; while(b>0) { if(b&1) t=(t%p)*(a1%p)%p; a1=(a1%p)*(a1%p)%p; b/=2; } return (int)(t%p); } int main() { int n; while(scanf("%d",&n) != EOF) { long long x = fast(2,n,1000000007)-1; //注意要-1 printf("%lld\n", x); } return 0; }
阅读全文
1 0
- 添加好友(快速幂取模)
- 添加好友(快速幂 金马五校赛-上海大学)
- 添加好友
- XMPP系列(三)---获取好友列表、添加好友
- QQ好友分组添加好友(UITableView实现)
- XMPP iOS客户端 添加好友 (3)
- 快速加好友!!!
- 添加qq好友
- 【openfire添加好友流程】
- openfire 自动添加好友
- XMPP之添加好友
- openfire 添加好友
- 网站添加好友功能
- SHUOJ添加好友
- 环信添加好友
- 社交网络中如何快速找到好友的好友(存储过程)
- QQ 添加分组 添加好友
- XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- 软件架构之 23种设计模式
- PB:数据保存失败
- 【Eternallyc】函数reverse的基本用法
- 自定义View的5中滑动方式
- 关于django model postgres的json字段编码问题
- 添加好友(快速幂取模)
- 鼠标的翻译
- servlet
- iframe使用总结(实战)
- 简单的Tampermonkey入门
- Linux下libevent安装与示例
- Ubuntu 安装SMB协议的打印机要求输入密码的解决
- hibernate的表的映射
- 16进制字符串转16进制数字