快速冪取餘

2021-08-28 05:16:08 字數 490 閱讀 3985

應用:快速計算出a的n次方對mod取餘

對於計算a的n次方,暴力的方法時間複雜度是o(n),對於n>1e8的情況下已經不能使用了

我們知道a的n次方可以寫成:

所以只要想辦法找出b陣列即可;我們考慮到乙個數使用二進位制表示的特點,對於乙個數的二進位制表示為1的位次分別是第i1、i2、i3、……ik,則n =

例如:n=13,其二進位制表示為13=001101=2^3+2^2+2^0,b1=2^0、b2=2^2、b3=2^3

**實現:

#include using namespace std;

#define maxn 21

typedef long long int ll;

const ll mod=1e9+7;

ll quick_mi(ll a,ll b)//a的b次方對mod取餘

return tp;

}int main()

快速冪及快速冪取餘

快速冪 當遇到求 a na n an這種問題時,可以將指數n拆開於是變成 a2 n 2 a 2 a2 n 2。然後重複將n除2,底數平方,直到指數為0為止就是結果。於是解決這題的時間複雜度從 o n o n o n 普通迴圈相乘a的做法 到了 o l ogn o logn o logn 這就是快速冪...

快速冪 取餘運算

給你三個整數 b,p,k,求 b p mod k。輸入只有一行三個整數,分別代表 b,p,k。輸出一行乙個字串b p mod k s,其中b,p,k分別為題目給定的值,s為運算結果。對於100 的資料,保證0 leq b,p leq 2 1 leq k leq 2 快速冪的模板題,沒有什麼好說的。有...

快速冪和取餘

poj 1995 需要的知識,快速冪和取模的運算 1 a b p a p b p p a b p a p b p p a b p a p b p p a b p a p b p 5 a b p c p a b c p p ab p c p a bc p p a b p c p a c p b c p...