不使用乘法、除法以及取余操作对两个数执行除法操作
a/b=exp( log(a/b) )=exp( log(a) - log(b) )
class Solution {
public:
int divide(int dividend, int divisor) {
if(dividend == 0){
return 0;
}
if(divisor == 1){
return dividend;
}
if(dividend == divisor){
return 1;
}
if(divisor == 2){
return dividend >> 1;
}
bool sign = false;
if((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0)){
sign = true;
}
if(dividend == INT_MAX && divisor == INT_MIN)
{
return 0;
}
dividend = dividend ==INT_MIN ? INT_MAX : abs(dividend);
divisor = divisor == INT_MIN ? INT_MAX : abs(divisor);
int result = (int) floor(exp(log(dividend) - log(divisor)));
return sign ? -result : result;
}
};