给我们的两个数字A和B.
给出A可以被B整除。
我需要计算(A/B)%MOD.
我们只知道两件事A%MOD, B
。我们如何从以上两点来计算这一点。
真正的问题
num = (1*2*3.....*262143)%MOD
,我们知道。
现在,我的任务是计算(2*3*4*...*262144)%MOD
,然后计算(3*4*5*....*262145)%MOD
,依此类推。
其中,MOD = 1000000009
。
更新: -
A = (2*3*4)%7 = ( 2%7 * 3%7 * 4%7)%7 = 3
B = ( (A*(5%7))%7 )/(2%7) = 0 .......................**THAT IS WRONG, ANSWER SHOULD BE 4**
答案 0 :(得分:3)
由于1000000009
是素数,因此问题很简单。您需要使用modular multiplicative inverses。
(A / B) % MOD = ((A % MOD) * (B^-1 % MOD)) % MOD
您可以使用Fermat's little theorem来表示,如果p
是素数,那么
a^(p - 1) % p = 1,
导致
(a * a^(p - 2)) % p = 1,
意思
a^(p - 2)
是a
mod p
的模块化反转。
A = (2 * 3 * 4 * ... * 262144) % MOD
B = (3 * 4 * 5 * ... * 262145) % MOD
= (A * (2^1000000007 % MOD) * (262145 % MOD)) % MOD
答案 1 :(得分:-1)
(x * y) % mod = (x % mod) * (y % mod)
鉴于此身份,您可以轻松找到答案:
A =(1 * 2 * 3 ..... * 262143)%MOD =(1%MOD * 2%MOD * 3 ..... * 262143%MOD)
B =(2 * 3 ..... * 262144)%MOD =(2%MOD * 3 ..... * 262144%MOD)
B = A *(262144%MOD)=(A * 262144)%MOD。