Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
class Solution {
public:
long long divide_(long long a,long long b)
{
int flag = 1;
long long x=1;
if(a<0) {a=-a;flag=-flag;}
if(b<0) {b=-b;flag=-flag;}
if(a==0) return 0;
if(a==b) return flag;
if(a<b) return 0;
long long c=b;
while(b<=a)
{
b<<=1;
x<<=1;
}
b>>=1;
x>>=1;
long long res = x+divide_(a-b,c);
if(flag==-1) return -res;
return res;
}
int divide(int dividend, int divisor) {
long long res = divide_(dividend,divisor);
if(res>INT_MAX) return INT_MAX;
return res;
}
};