AcWing 90 64位整數乘法

2021-09-26 20:46:00 字數 620 閱讀 1040

64位整數乘法

求 a 乘 b 對 p 取模的值。

輸入格式

第一行輸入整數a,第二行輸入整數b,第三行輸入整數p。

輸出格式

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

資料範圍

1≤a,b,p≤1018

輸入樣例:34

5輸出樣例:

2解題思路:

首先這道題目想到的第乙個思路是直接做乘法,然後再取模,但是這樣的話會用到高精度,而且還帶了取模的話,就有些麻煩了;所以結合上一到題;a * b ,其實就是b個a相加,那麼同樣我們可以把b先寫成二進位制數,每次判斷b的最低位是否為1,若是則將此時a加到最後的答案上去並取模,然後讓a *= a % p,然後再讓b右移一位。

和上一道題的區別:a = a * a % p -> a = (a + a) % p.

ac**:

#include #include using namespace std;

typedef long long ll;

inline ll hanshu(ll a, ll b, ll p)

return res % p;

}int main(void)

AcWing90 64位整數乘法

快速冪 二分 拆分,一方面二分消除重複計算,另一方面將超過表示範圍的運算降為結果在資料範圍內的運算。其一,ll的表示範圍為略低於2 64,兩個六十四位數相加就可以用unsigned ll儲存,變乘法為加法。其二,對於二分,將b用二進位制表示,將運算拆為移位和加法或乘法。對於具體的演算法,一般快速冪a...

AcWing 90 64位整數乘法

求 a 乘 b 對 p 取模的值。輸入格式 第一行輸入整數a 第二行輸入整數b,第三行輸入整數p 輸出格式 輸出乙個整數,表示a b mod p的值。資料範圍 1 a b,p 1018 1 a,b,p 10 1 a,b,p 10 18輸入樣例 3 45輸出樣例 2模板 intfp int a,int...

AcWing 90 64位整數乘法 快速乘

acwing 90.64位整數乘法 求 a 乘 b 對 p 取模的值。輸入格式 第一行輸入整數a,第二行輸入整數b,第三行輸入整數p。輸出格式 輸出乙個整數,表示a b mod p的值。資料範圍 1 a,b,p 1018 輸入樣例 3 45輸出樣例 2剛開始看到這個題的時候,我是想到的是質因子相乘,...