Divide two integers without using multiplication, division and mod operator.
不使用乘法、除法和求模运算求两个数相除。
class Solution {
public:
long long internalDivide(unsigned long long dividend,unsigned long long divisor)
{
if(dividend<divisor)
return 0;
int result = 1;
unsigned long long temp = divisor,left;
while(temp<=dividend)
{
left = dividend - temp;
temp<<=1;
if(temp>dividend)
break;
else
result<<=1;
}
return result + internalDivide(left,divisor);
}
int divide(int dividend, int divisor) {
unsigned long long _dividend = abs(static_cast<long long>(dividend)),
_division = abs(static_cast<long long>(divisor));
bool flag = ((dividend<=0)&&(divisor>0))|| ((dividend>=0)&&(divisor<0));
return flag?(-1)*internalDivide(_dividend,_division):internalDivide(_dividend,_division);
}
};
每日算法之二十五:Divide Two Integers,布布扣,bubuko.com
原文地址:http://blog.csdn.net/yapian8/article/details/27962017