a b 64位整數乘法(快速冪 o(logn))

2021-10-02 15:50:39 字數 690 閱讀 8518

求 a 的 b 次方對 p 取模的值。

輸入格式

三個整數 a,b,p ,在同一行用空格隔開。

輸出格式

輸出乙個整數,表示a^b mod p的值。

資料範圍

0≤a,b,p≤109

輸入樣例:

3 2 7
輸出樣例:

2
思路:快速冪就是將冪次b轉化成二進位制,然後按照二進位制,每次乘上基數(0或1)*位權來算,這樣就乘了logb(log以2為底)次(b的二進位制數有幾位就經過了幾次),所以時間複雜度即為logb;

如:3^8%7,將4轉化成二進位制為1000,從低位到高位,當遇到1時乘上位權即可,位權每次平方,經過3次,到了1便成了3^8,所以 答案就是3^8%7,此過程只經過了4次,而乙個乙個地乘就要經過8次。

完整**:

#include #define int long long

using namespace std;

int a,b,p;

int qpow(int a,int b,int p)

return ans;

}signed main()

return ans;

}signed main()

64位整數乘法

64位整數乘法 求 a 乘 b 對 p 取模的值。輸入格式 第一行輸入整數a,第二行輸入整數b,第三行輸入整數p。輸出格式 輸出乙個整數,表示a b mod p的值。資料範圍 1 a,b,p 1018 看到這個資料範圍有點茫然 跑去查了下unsigned long long 最近做題的時候,經常遇到...

位運算 64位整數乘法

64位整數乘法題目鏈結 題目大意 求 a aa 乘 b bb 對 p pp 取模的值,其中 1 leq aa a,bb b,pp p leq 10 1810 1018 輸入格式 第一行輸入整數a aa,第二行輸入整數b bb,第三行輸入整數ppp。輸出格式 輸出乙個整數,表示 a b a ba bm...

UPC 位運算64位整數乘法

時間限制 1 sec 記憶體限制 128 mb 提交 111 解決 56 提交 狀態 討論版 命題人 admin 題目描述 求 a 乘 b 對 p 取模的值,其中 1 a,b,p 10 18。輸入第一行a,第二行b,第三行p。輸出乙個整數,表示a b mod p的值。樣例輸入 2 39樣例輸出 6 ...