Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.
Return the quotient after dividing dividend by divisor.
The integer division should truncate toward zero.
Example 1:
Input: dividend = 10, divisor = 3
Output: 3
Example 2:
Input: dividend = 7, divisor = -3
Output: -2
C++
int divide(int dividend, int divisor) {
if (divisor == 0 || (dividend == INT_MIN && divisor == -1)) return INT_MAX;
long long m = abs((long long)dividend);
long long n = abs((long long)divisor);
int sign = ((dividend < 0)^(divisor < 0)) ? -1 : 1;
if (n == 1) return sign == 1 ? m : -m;
int res = 0;
while(m >= n)
{
long long t = n;
int mulit = 1;
while(m >= (t<<1))
{
t = t<<1;
mulit = mulit<<1;
}
res += mulit;
m -= t;
}
return sign > 0 ? res : -res;
}