P1226 模板 快速冪 取餘運算

2022-05-16 10:57:32 字數 907 閱讀 8877

給你三個整數 b,p,k,求b的p次方mod k的值

輸入只有一行三個整數,分別代表 b,p,k

輸出一行乙個字串b^p mod k=s,其中 b, p, kb,p,k 分別為題目給定的值, ss 為運算結果。

輸入 #1複製

2 10 9
輸出 #1複製

2^10 mod 9=7
對於乙個數的n次冪,我們可以將它進行拆解,在這裡以2^15為例:

step1.答案等於 15 個 2 相乘.

step2.答案等於 7 個 4 相乘再乘上乙個 2.

step3.答案等於 3 個 16 相乘再乘上 2*4.

step4.答案等於 1 個 256 乘上 2*4*16.

從以上的步驟中不難看出,當我們求乙個數的n次冪的時候,我們可以將它的兩兩進行配對相乘,如果有多出來的乙個數,則將它乘到答案中,否則繼續配對,直到只剩下乙個數為止。有乙個小的注意事項,對答案進行初始化時,初始值應為1而不是0.

1、每進行一步運算時都要把得到的答案對p取模,否則會只有28分。

2、b m p ans 都要定義成 long long 型變數,不然會只有42分。

3、不要認為運算過程中對答案取模就夠了,再輸出答案的時候不要忘記把最終的答案再對p取一次模,否則就會只有84分。

4、結合以上幾點注意事項的快速冪程式就可以得到100分了。

#include using namespace std;

int main()

printf("%lld",ans%p);

return 0;

}

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

洛谷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...