1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public: int divide(int x, int y) { if (x == INT_MIN && y == -1) return INT_MAX; long a = abs(x), b = abs(y), ans = 0; int sign = x < 0 ^ y < 0 ? -1 : 1;
while (a >= b) { long tmp = b, m = 1; while (tmp << 1 <= a) { tmp <<= 1; m <<= 1; } a -= tmp; ans += m; } ans *= sign; return ans; } };
|