洛谷P1226 快速冪取餘

2021-10-10 09:22:11 字數 994 閱讀 3051

模板模板快出來~~~

模板如下:

#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;

}int

main()

先寫一些小東西:上段**中有乙個typedef

其作用就是用來簡化定義的

但一般來說,我更多用的是#define

他們在一定程度上是等價的。

舉個栗子:

typedef

long

long ll;

(不要忘記後面的 ;)=

#define ll long long

之後就要聊回本題了:

本題ac**:

#include

#include

#include

using namespace std;

intmain()

cout<'='

}

這道題我交了三次

第一次錯在沒有把變數定義成 long long 型別:

大佬說過:十年oi一場空,不開long long 見祖宗!

所以對於這些含大數的式子,不管會不會溢位,都開乙個long long 以防萬一。

第二次錯在沒有考慮到一種特殊情況:1^0mod1

這個點很關鍵的,如果不看資料我覺得我抓破腦子也想不出這個點。

所以對於快速冪取餘的操作,最好在輸出前再mod一次。

洛谷 P1226 快速冪

題目 演算法分析 快速冪就是快速計算底數a的n次冪,其時間複雜度為o log n 與樸素冪運算的時間複雜度o n 相比,快速冪的計算效率有了極大的提高。矩陣快速冪的思想和快速冪的思想是一樣的。無非就是底數變為矩陣了。所以,在計算矩陣快速冪時,只需在 中定義一下矩陣的乘法即可。利用位運算實現快速冪,原...

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我們可...