求 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 b)
return ret;
}
完整**
#define debug
#ifdef debug
#include
#include
"/home/majiao/mb.h"
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define maxn ((int)1e5+7)
#define ll long long int
#define inf (0x7f7f7f7f)
#define fori(lef, rig) for(int i=lef; i<=rig; i++)
#define forj(lef, rig) for(int j=lef; j<=rig; j++)
#define fork(lef, rig) for(int k=lef; k<=rig; k++)
#define qaq (0)
using
namespace std;
#define show(x...) \
do while (0)
void
err(
)template
<
typename t,
typename..
. a>
void
err(t a, a.
.. x)
namespace fastio
void
print()
template
<
typename t,
typename..
. t2>
inline
void
read
(t &x, t2 &..
. oth)
while
(isdigit
(ch)
) x *
= f;
read
(oth...
);}template
<
typename t,
typename..
. t2>
inline
void
print
(t x, t2.
.. oth)
while
(x/=10)
;while
(p3>=0)
putchar
(print_f[p3--])
;putchar
(' ');
print
(oth...
);}}
// namespace fastio
using fastio::print;
using fastio::read;
#define int unsigned long long
int n, m, q, k, mod;
intfp
(int a,
int b)
return ret;
}signed
main()
AcWing90 64位整數乘法
快速冪 二分 拆分,一方面二分消除重複計算,另一方面將超過表示範圍的運算降為結果在資料範圍內的運算。其一,ll的表示範圍為略低於2 64,兩個六十四位數相加就可以用unsigned ll儲存,變乘法為加法。其二,對於二分,將b用二進位制表示,將運算拆為移位和加法或乘法。對於具體的演算法,一般快速冪a...
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位整數乘法 快速乘
acwing 90.64位整數乘法 求 a 乘 b 對 p 取模的值。輸入格式 第一行輸入整數a,第二行輸入整數b,第三行輸入整數p。輸出格式 輸出乙個整數,表示a b mod p的值。資料範圍 1 a,b,p 1018 輸入樣例 3 45輸出樣例 2剛開始看到這個題的時候,我是想到的是質因子相乘,...