取模和取余正解

2023-12-01 11:38
文章标签 取余 取模 正解

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

关于取模和取余,网上误人的帖子太多了,也没讲清楚,越看越懵,经过多方查阅和自己的证实,现将正解归纳如下:

计算方法

对于整数 A ,B

取模和取余的运算过程相同:

  1. 求商:C = A / B
  2. 计算模或者余数:R = A - C * B

取模和取余的区别仅仅是在计算C的时候不同:

​ 取余计算时:C 值向0方向取整,比如:

C = A / B = 7 / 4 = 1.75    ,向0方向取整,则C取 1 ,则取余R = A - C * B = 3
C = A / B = -7 / 4 = -1.75  ,向0方向取整,则C取-1, 则取余R = A - C * B = -3
C = A / B = -7 / -4 = 1.75  ,向0方向取整,则C取 1, 则取余R = A - C * B = -3

​ 取模计算时:C 值向负无穷方向取整,比如:

C = A / B = 7 / 4 = 1.75     ,向负无穷方向取整,则C取1, 则取模R = A - C * B = 3
C = A / B = -7 / 4 = -1.75   ,向负无穷方向取整,则C取-2,则取模R = A - C * B = 1
C = A / B = -7 / -4 = 1.75   ,向负无穷方向取整,则C取1, 则取模R = A - C * B = -3

总结:

1.当两个数的符号相同,即同为负或者同为正时,取余和取模结果相同,因为C偏向同一个方向取值,使得C值一样。

2.符号不同时,取余结果的符号和分子一致,取模结果的符号和分母一致。

3.Java 中的取余运算是 %,而取模运算是 Math.floorMod() 。

 

Java 代码验证

public class test {public static void main(String[] args) {System.out.println("------Complementation------");System.out.println(7 % 4);System.out.println((-7) % 4);System.out.println(7 % (-4));System.out.println((-7) % (-4));System.out.println();System.out.println("------Modulo Operation------");System.out.println(Math.floorMod(7, 4));System.out.println(Math.floorMod(-7, 4));System.out.println(Math.floorMod(7, -4));System.out.println(Math.floorMod(-7, -4));}
}

输出结果:

------Complementation------
3
-3
3
-3------Modulo Operation------
3
1
-1
-3

 

 

 

 

 

 

 

 

 

 

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



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

相关文章

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

前言:这个题目是真的难,不会做,看了题解才发现是咋回事 题目地址 最主要的就是为啥是除以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=

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

torch/lib/libgomp-d22c30c5.so.1: cannot allocate memory in static TLS block的正解

torch/lib/libgomp-4dbbc2f2.so.1.0.0: cannot allocate memory in static TLS block的正解 只需要一行命令即可解决 export LD_PRELOAD=/home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/torch/lib/../../to

ASP.NET MVC企业级程序设计(增删,int类型转时间取余)

目录 题目:  实现过程  控制器代码 DAL  BLL Index  Jia 题目:    实现过程  控制器代码 using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MvcA

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