AcWing90 64位整數乘法

2021-09-10 15:01:01 字數 493 閱讀 4322

快速冪=二分+拆分,一方面二分消除重複計算,另一方面將超過表示範圍的運算降為結果在資料範圍內的運算。其一,ll的表示範圍為略低於2^64,兩個六十四位數相加就可以用unsigned ll儲存,變乘法為加法。其二,對於二分,將b用二進位制表示,將運算拆為移位和加法或乘法。對於具體的演算法,一般快速冪a^b,化為乘法比如,3^7: 7=111(2),3^7=3 * 3^2 *3^4.也就是ans=ans*a,a每次在b右移一位後平方。對於這題,化為加法,3*7:=3+3*2+3*4,也就是ans=ans+a,a每次在b右移一位後乘以2.。

#include using namespace std;

typedef unsigned long long ull;

ull binarymul(ull a,ull b,ull p)

a = 2 * a % p;

b >>= 1;

} return ans;

}int main()

AcWing 90 64位整數乘法

64位整數乘法 求 a 乘 b 對 p 取模的值。輸入格式 第一行輸入整數a,第二行輸入整數b,第三行輸入整數p。輸出格式 輸出乙個整數,表示a b mod p的值。資料範圍 1 a,b,p 1018 輸入樣例 34 5輸出樣例 2解題思路 首先這道題目想到的第乙個思路是直接做乘法,然後再取模,但是...

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剛開始看到這個題的時候,我是想到的是質因子相乘,...