除法取模

做题时,经常要求“答案模一个数”的结果。
并且这个数往往是1000000007。
如果只有乘法和加法,那么我们对此毫无压力。
但是,除法出现时,我们往往需要用高精除法。
而费马小定理给我们带来了福音!从此,我们再不用为了区区一个模1000000007而用高精除法了。

费马小定理:若p是质数,且a、p互质,那么a^(p-1) mod p = 1。
果断忽略证明...

现在,我们要求a/c mod p,通过一系列神奇的转化,那万恶的除法就会神奇地消失...

a / c mod p
= a / c mod p * 1
= a / c mod p * c^(p-1) mod p
= a * c^(p-2) mod p

转化完毕。


当c与p不互质的时候,费马小定理就无能为力了。
其实,我们还有另一种方法。

设a / c = b,要求b mod p
a = k1*p + b1,
b = k2*p + b2,
则目标就是求b2
那么原式化为(k1*p + b1) / c = (k2*p + b2)
b2*c + p(k2*c - k1) = b1
设k2*c - k1 = x, b2 = y,那么px + cy = b1,其中p、c和b1已知,则可通过不定方程求解得到y',调整y'使0<=y'<p即可。
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值