AcWing 90 64位整數乘法

2021-10-06 16:19:49 字數 2073 閱讀 1935

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