题目要求:
Divide two integers without using multiplication, division and mod operator.
代码实现:
#include <iostream>
#include<vector>
#include <assert.h>
using namespace std;
class Solution {
public:
int divide(int dividend, int divisor) {
assert(divisor!=0);
if(dividend==0)
return 0;
bool sign=true;
if((dividend<0 && divisor>0)||(dividend>0 && divisor<0))
<span style="white-space:pre"> </span> sign= false;
size_t dividend_t=abs(dividend);
size_t divisor_t=abs(divisor);
if(divisor_t==1)
return sign?dividend_t:-dividend_t;
int result=0;
while(divisor_t<dividend_t)
{
size_t temp=divisor_t;
int count=1;
while((temp<<=1)<dividend_t)
{
count<<=1;
}
dividend_t=dividend_t-(temp>>=1);
result+=count;
}
if(divisor_t==dividend_t)
result++;
return sign?result:-result;
}
};
void main()
{
Solution s;
cout<<s.divide(2147483647,-2)<<endl;
getchar();
}