Divide two integers without using multiplication, division and mod operator.
class Solution {
public:
int divide(int dividend, int divisor) {
bool signFlag = false;
if ((dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0))
{
signFlag = true;
}
long long dividendInt = dividend;
long long divisorInt = divisor;
dividendInt = abs(dividendInt);
divisorInt = abs(divisorInt);
if (divisorInt > dividendInt)
return 0;
int ret = 0;
long long remainVal = dividendInt;
while (remainVal >= divisorInt)
{
long long midResult = divisorInt;
int midRet = 1;
while (midResult << 1 < remainVal)
{
midResult = midResult << 1;
midRet = midRet << 1;
}
remainVal = remainVal - midResult;
ret += midRet;
}
return signFlag? -ret:ret;
}
};