两数相除
题解里的:
def divide(dividend: int, divisor: int) -> int:
if dividend == -2147483648 and divisor == -1:
return 2147483647
a, b, res = abs(dividend), abs(divisor), 0
for i in range(31, -1, -1):
if (b << i) <= a:
res += 1 << i
a -= b << i
return res if (dividend > 0) == (divisor > 0) else -res
a = b * 2^(i1) + b * 2^(i2) + … + c (c < b)
a = b * (2 ^ i1 + 2 ^ i2 + …) + c
虽然也这么想的,但我就写不出这么简洁,唉