python中模運算_Python中的模運算

所謂取模運算,就是計算兩個數相除之后的余數,符號是%。如a % b就是計算a除以b的余數。用數學語言來描述,就是如果存在整數n和m,其中0 <= m < b,使得$ a = n * b + m $,那么$ a \% b = a - n * b = m $。

先測試幾個例子:

print(9%5) # 4

print(-9%5) # 1

print(9%-5) # -1

print(-9%-5) # -4

可以看到,數值部分雖然相同,但是正負符號的四種不同組合,會產生完全不同的四種結果。那么這里面有什么規律嗎?

實際上,雖然結果不一樣,不過取模運算完全遵從統一的規則:

其中$\lfloor\frac{a}{b}\rfloor$表示a除以b的結果向下取整。

比如$9\%5$,先計算$\lfloor\frac{9}{5}\rfloor$,向下取整得到1,然后計算$9-1*5$,得到4;

同理$-9\%5$,先計算$\lfloor\frac{-9}{5}\rfloor$,向下取整得到-2,然后計算$-9-(-2*5)$,得到1;

再來看$9\%-5$:

最后是$-9\%-5$:

雖然知道結果是如何計算出來的,不過人腦不比電腦,這樣計算未免太復雜,為避免給大腦增加負擔,再根據上面的規則,這里我總結了一個簡單的記憶方法:

對于不帶負號的,2個數字都是正數的,直接求結果,這個應該來說是比較簡單的,而且無論符號是什么,我們都只計算這個值;

對于有負號的,不管負號在哪個數字,都去除負號,然后計算步驟1的結果;

接下來根據負號的位置分為3種情況,假設除數是K,去掉負號后取模的結果是M:2個數都是負數,直接等于-M

被除數是負數,除數是正數,由于是向下舍入,最后相當于會多加上一個K,也就是說模一定是大于0的,結果是K-M

被除數是正數,除數是負數,剛好相反,結果是M-K,注意這里的K是除數的絕對值,是正數

簡單歸納:

不管有沒有負數,先按正數求模得到M

2個數都為負數,結果是-M

只有1個數為負數,負數在上,記住結果一定是正的,大數-小數(除數-余數),那么就是K-M

只有1個數為負數,負數在下,記住結果一定是負的,小數-大數(余數-除數),那么就是M-K

注:此規律的前提是除的結果一定是向下取整,如果你用java去套這個規律會發現完全行不通。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453060.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453060.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453060.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

偉大公司為什么需要技術型領導?

Facebook前工程總監黃易山撰寫了一系列文章&#xff0c;很好地總結了Facebook卓越研發文化中的寶貴經驗。本文是這一系列文章的第五篇&#xff0c;也是最后一篇。 何謂技術型領導 所有從外部聘用的管理人員包括技術部門負責人&#xff0c;都必須能夠編寫代碼&#xff0c;并且…

css樣式變 及實際用法

<html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>引入外部樣式</title><link rel" stylesheet" href"home.css&…

服務器部署的參數文檔,服務器參數配置

服務器參數配置 內容精選換一換源端服務器遷移至華為云后&#xff0c;最終將遷移到彈性云服務器上。因此在遷移前&#xff0c;您需要在華為云中創建一個或多個彈性云服務器。進入“彈性云服務器”頁面。關于參數的詳細信息&#xff0c;請參見購買彈性云服務器。Windows系統的目…

擴散法及其改進

擴散法是一種靜態路由算法,每一個輸入的分組都被從除輸入線路之外的所有其它線路上轉發出去.擴散法顯然會產生大量的分組副本,因此必須有一些辦法來抑制無限的轉發.1.一種辦法是在分組頭中攜帶一個跳數計數器,分組每到一個節點其跳數計數器就減1,當計數器為0時分組被丟棄.計數器…

h5頁 點擊返回時關閉_在微信、支付寶、百度錢包實現點擊返回按鈕關閉當前頁面和窗口...

最近在使用微信、支付寶、百度錢包實現網頁支付&#xff0c;對支付成功將自動關閉頁面&#xff0c;對于支付失敗&#xff0c;將顯示錯誤信息。當在錯誤頁面的時候&#xff0c;點擊返回或者Android物理按鍵上一步的時候&#xff0c;將關閉頁面。在微信、支付寶、百度錢包中&…

串操作指令

串操作指令可以方便對一組連續的數據進行操作。串操作后自動根據DF標志位修改ESI和EDI&#xff0c;DF 0時&#xff0c;ESI&#xff0c;EDI遞增&#xff0c;DF 1時&#xff0c;ESI&#xff0c;EDI遞減。串操作指令有2組&#xff0c;1組實現數據串傳送&#xff0c;另1組實現數據…

IS-IS基本配置

實驗內容&#xff1a;現在網絡中有4臺路由器&#xff0c;用戶希望利用這4臺路由器通過IS-IS協議實現網絡互聯&#xff0c;并且因為R1和R2性能相對較低&#xff0c;所以還要使這兩臺路由器處理的數據信息相對較少。 網絡拓撲&#xff1a; 實驗分析&#xff1a; 根據題意可知R1和…

高并發高流量網站架構

Web2.0的興起&#xff0c;掀起了互聯網新一輪的網絡創業大潮。以用戶為導向的新網站建設概念&#xff0c;細分了網站功能和用戶群&#xff0c;不僅成功的造就了一大批新生的網站&#xff0c;也極大的方便了上網的人們。但Web2.0以用戶為導向的理念&#xff0c;使得新生的網站有…

多處理機的進程調度方式

一.自調度方式 二.成組調度方式 三.專用處理機分配方式

枚舉類型用法_Mybatis-plus常見用法總結三

前面已經介紹了Mybatis-plus基本用法&#xff0c;今天為大家分享一些Mybatis-plus高級應用邏輯刪除自動注入枚舉類型處理Sql注入器多租戶表結構CREATE TABLE sys_role ( id varchar(64) NOT NULL COMMENT 主鍵, code varchar(64) NOT NULL DEFAULT COMMENT 角色編碼, name …

NOIP 2011 Day2

tags: 貪心模擬NOIP categories:信息學競賽總結計算系數 Solution 根據二項式定理,\[ \begin{align} (ab)^n\sum_{k0}^nC_{n}^{k}a^kb^{n-k} \end{align} \] 那么\[ \begin{align}(axby)^k&\sum_{p0}^kC_{k}^p(ax)^p(by)^{k-p}\\ &\sum_{p0}^k(C_{k}^pa^pb^{k-p})x^py^…

VS Code的golang開發配置 之 代碼提示

之前用VS Code的時候&#xff0c;發現自己的代碼的提示一直不好&#xff0c;換用JetBrain的Goland的代碼提示是好了&#xff0c;但是比較占用資源。在網上找了一些資料&#xff0c;發現很多人也是遇到第三方或者自己的代碼無法提示的情況&#xff0c;但是都沒有下文了。后來發現…

使用oprofile分析性能瓶頸

使用oprofile分析性能瓶頸 1. 概述oprofile 是 Linux 平臺上&#xff0c;類似 INTEL VTune 的一個功能強大的性能分析工具。其支持兩種采樣(sampling)方式&#xff1a;基于事件的采樣(event based)和基于時間的采樣(time based)。基于事件的采樣是oprofile只記錄特定事件&#…

什么是死鎖

死鎖是多個進程在運行過程中因競爭資源時產生的一種僵局。 各并發資源彼此等待對方擁有的資源&#xff0c;且在得到對方資源前不釋放自己的資源。

python數據工程師 面試題_阿里P7工程師耗時兩天整理的292道python大廠面試題,內含解析!...

前言相對于python大家應該都不會陌生吧&#xff01;現在java跟python可以算的是勢均力敵了&#xff0c;所以現在學習python 的小伙伴也是越來越多了&#xff0c;可是學完之后就能找到稱心如意的工作了嗎&#xff1f;很多小伙伴學習Python的時候感覺很簡單&#xff0c;但是到了去…

數組復制

在Java里面,可以用復制語句”AB”給基本類型的數據傳遞值,但是如果A,B是兩個同類型的數組&#xff0c;復制就相當于將一個數組變量的引用傳遞給另一個數組&#xff1b;如果一個數組發生改變&#xff0c;那么引用同一數組的變量也要發生改變。 1.使用FOR循環,將數組的每個元素復…

IntelliJ IDEA 對于generated source的處理

IntelliJ IDEA 對于generated source的處理 學習了&#xff1a;https://stackoverflow.com/questions/5170620/unable-to-use-intellij-with-a-generated-sources-folder 如果有generated source &#xff0c;例如使用gRPC過程中生成的&#xff0c;可以使用鼠標右鍵點擊使之成為…

產生死鎖的原因

一 競爭資源&#xff0c;但是資源的數目不能滿足進程的需要。 二 進程間推進順序非法&#xff0c;進程在運行過程中請求和釋放資源的順序不當。

fabric shim安裝合約_hyperledger fabric 開發第一個智能合約

一、編寫智能合約代碼HelloWorld.go&#xff0c;go語言實現&#xff0c;代碼很簡單&#xff0c;每個合約包含兩個方法&#xff0c;Init、Invoke。package mainimport ("fmt""github.com/hyperledger/fabric/core/chaincode/shim""github.com/hyperled…

不能干一輩子開發???

程序員的職業生涯之我見 總是聽到下面的論調 程序員干不了一輩子&#xff01; 程序員怎么也不能干一輩子吧&#xff01; 在中國程序員還能干一輩子&#xff1f; 過了&#xff08;30&#xff09;40我就干不動程序員了&#xff01; 每每聽…