您的位置:首页 > 编程语言 > C语言/C++

Divide Two Integers

2014-10-26 11:48 621 查看
题目要求:

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 二分 C++