洛谷 P1226 快速冪

2021-10-10 08:23:54 字數 630 閱讀 5052

【題目**】

【演算法分析】

快速冪就是快速計算底數a的n次冪,其時間複雜度為o(log₂n)。

與樸素冪運算的時間複雜度o(n)相比,快速冪的計算效率有了極大的提高。

矩陣快速冪的思想和快速冪的思想是一樣的。無非就是底數變為矩陣了。所以,在計算矩陣快速冪時,只需在**中定義一下矩陣的乘法即可。

利用位運算實現快速冪,原理如下:

即將十進位制冪轉換為二進位制冪,然後利用二進位制位間的倍增關係遞推,達到快速計算冪的過程。

計算過程中,為了防止溢位,需要進行「取模」運算,其運算規則如下:

(a+b)%p=(a%p+b%p)%p

(a-b)%p=(a%p-b%p)%p

(a*b)%p=(a%p*b%p)%p

【演算法**】

#include using namespace std;

typedef long long ll;

int fastpow(ll a,ll n,ll p)

return ans;

}int main() {

ll b,p,k;

cin>>b>>p>>k;

cout<

【參考文獻】

洛谷P1226 快速冪取餘

模板模板快出來 模板如下 include include include using namespace std typedef long long ll typedef unsigned long long ull ll mod pow ull x,ull n,ull mod return res...

P1226 模板 快速冪 取餘運算

原題 題目描述 輸入b,p,k的值,求b p mod k的值。其中b,p,k k為長整型數。輸入輸出格式 輸入格式 三個整數b,p,k.輸出格式 輸出 b p mod k s s為運算結果 輸入輸出樣例 輸入樣例 1 2 10 9 輸出樣例 1 2 10 mod 9 7 源 includeusing...

P1226 模板 快速冪 取餘運算

題意 求b的p次冪對k取餘的結果 分析 先不考慮取餘的情況,我們來求b的p次 傳統思想上我們認為b的p次就是由p個b相乘得到的,所以就用一層for迴圈便可得到答案。如果用for迴圈你會驚奇的發現你tle了。這時候快速冪的好處就體現出來了。首先應該知道的是任何數都能用二進位制表示出來。對於乙個p我們可...