I had not noticed the difference of integer division between C++ and Python, until I was trying to solve this leetcode problem.

This problem is very simple but I got an unexpected WA. After I had done some debugging, I found it out that integer division in Python has a different behavior, comparing that in C++.

In C++, the result of integer division is rounded towards zero.

int x = 3; int y = -2; int z = x/y; printf("%d\n", z);

It will output -1, since the result of 3/(-2) is -1.5 and then it is rounded towards zero.

But Python says differently.

>>> 3/-2 -2 >>> -3/2 -2 >>> -(3/2) -1

It looks like when doing integer division, python always rounds down.

The following code works, if you want to do a rounding-to-zero integer division in python. A simple math.floor() also does.

def IntegerDivision(x, y): z = x / y if x % y == 0 and x / y < 0: z += 1 return z