首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模算子与除法算子

模算子与除法算子
EN

Stack Overflow用户
提问于 2014-03-15 07:15:44
回答 2查看 315关注 0票数 1

两个数字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

更新:-

代码语言:javascript
复制
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**
EN

回答 2

Stack Overflow用户

发布于 2014-03-15 08:07:17

由于1000000009是素数,所以问题很容易解决。您需要使用模乘逆

代码语言:javascript
复制
(A / B) % MOD = ((A % MOD) * (B^-1 % MOD)) % MOD

您可以为此使用费马小定理,也就是说,如果p是素数,那么

代码语言:javascript
复制
a^(p - 1) % p = 1, 

这导致了

代码语言:javascript
复制
(a * a^(p - 2)) % p = 1, 

含义

代码语言:javascript
复制
a^(p - 2)

a mod p的模逆。

代码语言:javascript
复制
A = (2 * 3 * 4 * ... * 262144) % MOD
B = (3 * 4 * 5 * ... * 262145) % MOD
  = (A * (2^1000000007 % MOD) * (262145 % MOD)) % MOD
票数 3
EN

Stack Overflow用户

发布于 2014-03-15 07:37:43

(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。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22420803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档