模板 快速冪

2021-08-04 16:43:02 字數 740 閱讀 6820

1.萌新的話

快速冪主要是用來解決一些超時間複雜度的冪運算。其主要思想是根據乙個結論:2^n=4^(n/2).這樣原本暴力的o(n)演算法優化為了o(logn)的演算法了。(時間複雜度–!!!)

2.**

#include

#include

#include

#include

#include

using

namespace

std;

inline

int read()

else

while(ch>='0'&&ch<='9')

return data*p;

}long

long quick_pow(long

long a,long

long b,long

long p)

b>>=1;//b>>=1:指x除以2的1次方 ;(b<<=1: 指b乘以2的1次方 )

sum=sum*sum%p;

}return ret;

}int main()

舉個例子~

2^16%5

輸出為1;

/ 任何乙個偉大的目標,都有乙個微不足道的開始!

————by luogu

快速冪(模板)

對於任何乙個整數的模冪運算 a b c 對於b我們可以拆成二進位制的形式 b b0 b1 2 b2 2 2 bn 2 n 這裡我們的b0對應的是b二進位制的第一位 那麼我們的a b運算就可以拆解成 a b0 a b1 2 a bn 2 n 對於b來說,二進位制位不是0就是1,那麼對於bx為0的項我們...

快速冪(模板)

快速冪原理就是將emm 比如求n的m次方nm那麼就將m轉化為2進製數 對每一位進行判斷,如果當前位數為1就進行一次乘法,同時每次判斷後的乘數為n的當前判斷的m的位數的冪。假設當前已經判斷到2進製下m的第k位位數上為一那麼乘上nk。好懂 include define ll long long usin...

快速冪模板

快速冪模板 下面是自己寫的,比較清楚 include include include includeusing namespace std typedef long long ll const ll mod 1e9 7 ll binarypow1 ll a,ll b ll binarypow2 ll...