我们先来看取模和取余操作的公式和含义:
r = a - n * (a/n) (a对n取模或取余都是这个公式)
取模,遵循尽可能让商向负无穷靠近的原则 (因此,对于取模来说,a/n要向负无穷取整)
取余,遵循尽可能让商向0靠近的原则 (对于取余来说,a/n要向0取整)
# C语言:
-9%7 = -9-7*(-1) =-2
9%-7 = 9-(-7)*(-1) =2
# Python语言:
-9%7 = -9-7*(-2) =5
9%-7 = 9-(-7)*(-2) =-5
#因此,我们可以知道Python的%符号指的是取模,C++的%指的是取余。
因此,为了让Python实现取余操作:
# int是向0取整,//是向下取整
def res(a,n):
return a-n*int(a/b)
向上取整:
(a+b-1)//b