一、前言

在日常的算法题学习中,我们有时会遇到一些题目中所需要处理的数据比较大。由于计算机的特点,我们直接处理这些大数据是会出问题的,为了避免出现这样的问题,题目中往往需要对计算中的数据或者结果取模处理,但是我们往往不能等到所有的计算结束后再取模处理,因为这样数据往往已经超出规定的范围了。因此,我们在进行运算的时候就要同时进行取模处理,在本篇博客中,会简单介绍一下四则运算的取模处理,但是限制与篇幅问题,本博客只会直接介绍处理方法,对于原理则不做证明。

二、加法运算取模

加法取模的处理是比较简单的。
(A + B) % mod = ((A % mod) + (B % mod)) % mod

三、乘法运算取模

乘法取模运算取模的操作方法与加法运算类似
(A * B) % mod = ((A % mod) * (B % mod)) % mod

四、减法运算取模

减法取模运算同样与加法乘法类似,但是有一点需要注意的是,由于在进行减法运算后结果可能是负数,因此需要加上一个mod后再取模。
(A - B) % mod =((A % mod) - (B % mod) +mod) % mod

五、除法运算取模

除法运算取模是不是也和上面的取模运算一样是
(A / B) % mod = ((A % mod) / (B % mod)) % mod呢?
答案是否定的,随便代入几个数进去验证一下就会发现上面的公式不成立。

对于除法取模而言,我们必须要求出对于除数B关于mod的逆元inv(B),然后得到除法取模公式
(A / B) % mod = ((A % mod) * (inv(B) % mod)) % mod
在这里,B的逆元 inv(B)=Bmod-2,在这里对公式的证明省略(费马小定理)
代码如下,需要时可以直接使用

const int mod = 1e9 + 7;
int quickpow(int a, int b)  //快速幂求a^b%mod
{if (b < 0)return 0;int ret = 1;a %= mod;while (b){if (b & 1)ret = (ret * a) % mod;b >>= 1;a = (a * a) % mod;}return ret;
}
int inv(int a)
{return quickpow(a, mod - 2);
}

作者:Avalon·Demerzel

【数论】四则运算的取模处理相关推荐

  1. `Computer-Algorithm` 数论基础知识 (同余,取模,快速幂,质数,互质,约数,质因子)

    catalog 同余 取模 快速幂 质数 互质 约数 质因子 @Delimiter(旧解释) 经验谈 两数之差也整除 加一的特殊性 取模 累加的周期性 取模的唯一集合 取模下的四则运算 除法的不可约性 ...

  2. java取模运算_Java的四则运算符与取模运算符

    各位小伙伴们大家好,这次小编要介绍的是Java的四则运算符与取模运算符.这里,小编要提一下一些常见的运算符:算术运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符.这次就先来讲算术运算符与取模运算 ...

  3. 取模运算总结 - 数论

    引入 编程竞赛有相当一部分题目的结果过于庞大,整数类型无法存储,往往只要求输出取模的结果. 例如(a+b)%p,若a+b的结果我们存储不了,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模 ...

  4. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

  5. java乘法逆元与除法取模,关于数论乘法逆元及相关知识点

    在求解a/b%m时,可以转化为(a%(b*m))/b,转化过程如下 令k = (a/b)/m(向下取整), x = (a/b)%m; a/b = k*m + x (x < m); a = k*b ...

  6. java中的取模和取余_取模运算

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 取模运算是求两个数相除的余数.[1] 取模运算("Modulus Operation")和取余运算(&qu ...

  7. java乘法逆元与除法取模,逆元

    题目描述 题目描述 求关于x的同余方程ax≡1(mod b)的最小正整数解. 输入格式 每组输入数据只有一行,包含两个正整数a, b,用一个空格隔开. 数据规模: 对于40%的数据,2≤b≤1,000 ...

  8. python 除法取模_Python的运算符和表达式(上)

    上一篇文章霖小白分享了Python中的字符串和数字类型,这一篇让我们回到小学时代的数学,因为霖小白这一篇分享的是关于Python程序中的运算符和表达式,这一次先分享算术运算符和算术表达式,比较运算符和 ...

  9. c语言x的2取模_c语言如何取模运算

    展开全部 取模运算符是% ,对负数32313133353236313431303231363533e4b893e5b19e31333366306438取模不一定都是正数. 例如: 例一:int mai ...

  10. 算术运算符_四则与取模运算

    运算符 算数运算符 Java中,整数使用以上运算符,无论怎么计算,也不会得到小数. public static void main(String[] args) {int i = 1234;Syste ...

最新文章

  1. 评论列表显示及排序,个人中心显示
  2. [DiscuzNt]整合DiscuzNt论坛目前所发现的小BUG及个人简单解决办法
  3. 问一个AddDevice和设备符号链的问题??
  4. 北京科技大学大小年计算机,【猛戳】本科一批没录满高校名单(参考2015)!报志愿三步走211分8档,985分4档,全在这!...
  5. cf706C(dp)
  6. 使用隐含参数testMappingSpeed排查GoldenGate抽取慢的步骤
  7. VS对.ini文件的操作
  8. web前端基础知识-(六)jQuery-补
  9. 第5讲:软考中高项04_进度管理、成本管理
  10. 2018年内蒙古孕产妇、婴儿死亡率实现双下降
  11. tomcat中开启SSL
  12. MCS:连续随机变量——Beta分布
  13. 西南科技大学OJ题 利用二叉树中序及先序遍历确定该二叉树的后序序列0984
  14. 财务数字转换--大小写转换
  15. fcitx 添加输入法但并没有输入候选项
  16. Python 解析 spec 文件
  17. 笔记本闪屏是怎么回事呢?笔记本闪屏三个原因介绍
  18. 中国石油大学计算机评估排名,中国石油大学华东学科评估结果及排名情况怎样...
  19. 微软客服的痛苦-还敢应聘微软客服
  20. Django项目——CRM

热门文章

  1. Visual Studio 2017 15.6预览版最新进展
  2. CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)
  3. 内存溢出真实案例分析
  4. php教程 TTP中GET与POST的区别
  5. Linux终端的总结和shell
  6. C#热血传奇游戏服务端再次开源更新
  7. springboot 和springMVC interceptor使用
  8. “Error:(1, 1) java: 非法字符: '\ufeff'”错误解决办法
  9. Windows Azure Virtual Machine (33) Azure虚拟机删除重建
  10. 【爬虫系列之三】URLError异常处理以及Cookie的使用