取模 and 求余

2023-11-04 02:48
文章标签 取模 求余

本文主要是介绍取模 and 求余,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

取模运算和求余运算的区别

标签: python语言cshell脚本编程
29454人阅读 评论(6) 收藏 举报
分类:

通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算。在这里要提醒大家要十分注意当前环境下'%'运算符的具体意义,因为在有负数存在的情况下,两者的结果是不一样的。


对于整型数a,b来说,取模运算或者求余运算的方法都是:

1.求 整数商: c = a/b;

2.计算模或者余数: r = a - c*b.


求模运算和求余运算在第一步不同: 取模求余运算在取c的值时,向0 方向舍入(fix()函数);求余取模运算在计算c的值时,向无穷小方向舍入(floor()函数)。

因此,当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。但是当符号不一致的时候,结果不一样。

具体来说,求模运算结果的符号和b一致,求余运算结果的符号和a一致


在C语言中,%符号表示的是求余运算,在python脚本中,%表示的是取模。(通常取模运算中b不允许是负数,但是在python 2.5.1里可以在%后面跟负数,因为python语言中除法的结果是向0舍入,因此计算结果是取模!)

下面表格是一些典型的取模或者求余的值。

     a   
   b   
C语言:a%b   (求余)
Python Shell: a%b(取模)
-3-5-3-3
-34-31
-32-11
-16-15
-4-3-1-1
2422
5322
4-74-3
4-31-2
-6-5-1-1

这篇关于取模 and 求余的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342685

相关文章

排列数+时间戳+逆元取模

前言:这个题目是真的难,不会做,看了题解才发现是咋回事 题目地址 最主要的就是为啥是除以3,c之前需要完成a 和 b,d 和 e 对我们的答案没有影响,所以我们要除以 A(3,3) ,但是 a 和 b 的排列没有要求,所以乘以 A( 2 , 2 ) 抵消得到 3 #include<bits/stdc++.h>using i64 = long long;using u64 =

CSU - 1556 Jerry's trouble(快速幂取模)

【题目链接】:click here 【题目大意】:计算x1^m+x2^m+..xn^m(1<=x1<=n)( 1 <= n < 1 000 000, 1 <= m < 1000) 【解题思路】:快速幂取模 代码: solution one: #include<bits/stdc++.h>#define LL long longusing namespace std;const

UESTC 1712 Easy Problem With Numbers 除法对和数取模,分解,线段树

附上神牛原版思路: 如果这个题只有乘法,那么你肯定会做吧?线段树更新区间查找区间。 那么有除法呢?当一个数x和m互质的时候,除以x可以改为乘以x的逆元。(至于互质的数求逆元用扩展欧几里德,这个网上可以随便找到) 但是这题并不能保证除的数与m互质吧?什么时候x与m不互质呢?就是x与m含有公因子吧? 那么我们一开始就把m分解,分解出来m有p1,p2,p3,p4...pn等一

mycat水平分库-对用户id取模

schema.xml: <?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" ><table name=

If We Were a Child Again(大数除法、求余)

Description         “Oooooooooooooooh!          If I could do the easy mathematics like my school days!!          I can guarantee, that I’d not make any mistake this time!!”          Says a smar

JavaScript 取模应用 各行换色

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> window.οnlοad=function () { var aLi=document.getElementsByTagName('li'); for(var i=0;i<aLi.le

整体思想以及取模

前言:一开始由于失误,误以为分数相加取模不能,但是其实是可以取模的 这个题目如果按照一般方法,到达每个节点再进行概率统计,但是不知道为什么只过了百分之十五的测试集 题目地址 附上没过关的代码 #include<bits/stdc++.h>using namespace std;#define int long longint n; int ans = 0;const int

算数操作符(除法操作符和取模操作符)

目录 / --- 除法操作符 整数除法 代码举例说明 代码验证  浮点数除法 代码举例说明 代码验证 % ---  取模操作符 代码举例说明 代码验证 除法操作符和取模操作符的相关案例 / --- 除法操作符 整数除法 除号的两端都是整数,执行的就是整数除法整数除法的运行规则:只保留商,去掉余数 代码举例说明 int r = 7 / 2;pri

hdu4506(快速幂取模)

小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 4112    Accepted Submission(s): 1069 Problem Description 小明自从告别了ACM/IC

poj 3358 Period of an Infinite Binary Expansion(数论:欧拉函数+快速幂取模)

不太好理解题意的一道题 给出一个除式 要求找到对应二进制的循环起点和最小循环节长度 这里还考察了分数化小数的知识点。。。 这点不会难怪看题解都觉得很吃力 1/10 分数化小数的规律如下: 0.1 0.2 0.4 0.8 1.6 1.2 0.4(每次取左侧一位×2,如果大于10,小数位取1,再把这一位%10) 0    0    0   0    1    1    0 以1/1