【快速冪公式】“盛大遊戲杯”第15屆上海大學程式設計聯賽夏季賽暨上海高校金馬五校賽-新增好友
阿新 • • 發佈:2019-01-28
新增好友
時間限制: 1000ms 記憶體限制: 128M
Tony最近喜歡上了龍之谷遊戲,所以他想叫上他的好友組建一個公會來一起享受這款遊戲。
Tony一共有n個好友,他可以叫上任意k(1<=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;
}