P1226 模板 快速冪 取餘運算

2021-09-16 20:49:30 字數 687 閱讀 3548

原題

題目描述

輸入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 namespace std;

int main()

cout << bb << '^' << pp << " mod " << k << '=' << ans%k;//最後取一下餘,避免指數為0

//system("pause");

return 0;

}

3.原理

指數從二進位制角度看,那麼最終冪就是底數與各個二進位制位的冪的積。故而,從二進位制最後一位向前運算,如果是1,ans乘上這一位;否則跳過。

取余是根據分配律:(ab)%c=((a%c)(b%c))%c

P1226 模板 快速冪 取餘運算

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

P1226 模板 快速冪 取餘運算

給你三個整數 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次冪,我們可以將它...

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