新增好友(快速冪取模)

2021-08-03 14:55:13 字數 979 閱讀 7254

描述

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) 

return (int)(t%p);

}

ac**

#include

#include

#include

#include

#include

#include

using

namespace

std;

int fast(int a,int b,int p)

return (int)(t%p);

}int main()

return

0; }

SHUOJ新增好友

tony最近喜歡上了龍之谷遊戲,所以他想叫上他的好友組建乙個公會來一起享受這款遊戲。tony一共有n個好友,他可以叫上任意k 1 k n 個好友來組建公會,並且所有好友都會答應他的請求。問tony一共可以有多少種方案組建這個公會?只要不是完全相同的人組建的方案視為不同方案,並且tony至少要叫上乙個...

快速冪 快速冪取模

快速冪的思想在於快速求解高冪指數的冪運算 複雜度為o log2n 與樸素運算相比有很大的改進 接下來給出 其中有詳解 include include using namespace std typedef long long ll ll pow1 int a,int b 最常規的方法 將冪指數轉化為...

快速冪 快速冪取模

求x m 一般方法是 xm x xm 1,這樣需要做m次乘法,未免過慢。加速方法有兩種。1.基於當m為偶數時,xm x2 m 2 當m為奇數時,xm x xm 1。顯然當m為偶數時m會減半,當m為奇數時,下次就是偶數。m可以很快收斂到0.表示冪 2.將m看成二進位制串mkmk 1 m1m0,那麼xm...