【快速幂公式】“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛-添加好友

来源:互联网 发布:rxjava gson解析数组 编辑:程序博客网 时间:2024/06/09 23:42

添加好友

时间限制: 1000ms   内存限制: 128M

Tony最近喜欢上了龙之谷游戏,所以他想叫上他的好友组建一个公会来一起享受这款游戏。

Tony一共有n个好友,他可以叫上任意k1<=k<=n)个好友来组建公会,并且所有好友都会答应他的请求。问Tony一共可以有多少种方案组建这个公会?

只要不是完全相同的人组建的方案视为不同方案,并且Tony至少要叫上一个人。

每组输出一行,输出方案数。(对1000000007取模)

 
2
3
思路

从n个人中选择,可以选一个,两个,三个等等,因此方法总数为


解题代码

#include<iostream>using namespace std;#define mod 1000000007#define __int64 long long__int64 qp(__int64 a,__int64 b,__int64 c){__int64 ans=1;while(b){if(b&1)ans=ans*a%c;b>>=1;a=a*a%c;}return ans;}int main(){__int64 n;while(scanf("%lld",&n)!=EOF)printf("%lld\n",qp(2,n,mod)-1);return 0;}

快速幂算法


时间复杂度:O(logn)

代码

int quickpow(int a,int b,int mod)//a为底数,b为指数{int ans=1;while(b){if(b&1)//判断指数是否为奇数ans=ans*a%mod;b>>=1;//右移1位,相当于b/=2;a=a*a%mod;}return ans;}




阅读全文
2 0