取模运算

前言

在很多的编程竞赛中,题目的结果或者数据都会过于庞大,以至于就算是使用long long型也无法储存,所以很多的题就往往会要求我们去输出取模的结果,这时候我们就用到取模运算。


取模跟取余是几乎同一个意思的东西,都是“%”,我们可以叫他取模,也可以叫他取余。

取模和取余唯一的区别就是在求商时,取模向负无穷方向舍入,而取余向0方向舍入。

一,取模运算(加,减,乘以及指数)

(a + b)%M = (a%M + b%M)%M    //加法取模运算
(a - b)%M = (a%M - b%M + M )%M (a%M - B%M 后的值一定小于M)  //减法取模运算
(a * b)%M = (a%M)*(b%M)%M。  // 乘法取模运算
很多的除法取模都会用到求逆元的知识,这篇博客就不具体介绍了
a^b%p = (a%p)^(φ( p ) + b%φ( p )) %p(降幂公式)  //指数取模运算,这里用到了欧拉定理的延伸

二,负数取模

9%10=1

这里列出一个两个正整数取模的例子,可以与下面的负数取模进行对比

我们分两种情况:

①一正数一负数取模:

-9%10 = 1 ⇐ ⇒ (-9 + 10)%10
11%(-10) = -9 ⇐ ⇒ (11 - 20)%(-10)


9%(-10) = -1 ⇐ ⇒ (9 - 10)%(-10)
11%(-10) = -9 ⇐ ⇒ (11 - 20)%(-10)

②两个负数取模:

(-9)%(-10) = -9 ⇐ ⇒ 9%10
(-11)%(-10) = -1 ⇐ ⇒ 11%10

总结

取模运算是一个用来缩小数据的大小的很常用的手段,例如快速幂、快速乘等都需要用到取模运算来解决爆精度问题(数据溢出)。不难,但是很重要,所以需要很扎实的掌握他的运算法则。

  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值