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();
}
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:Divide Two Integers
- leetcode Divide Two Integers
- LeetCode之操作两个数相除DivideTwoIntegers
- LeetCode进阶之路(Divide Two Integers)
- [LeetCode]29. Divide Two Integers
- leetcode:Divide Two Integers
- Leetcode 29. Divide Two Integers (Medium) (cpp)
- [LeetCode] Divide Two Integers 两数相除
- Divide Two Integers
- leetcode 29 - Divide Two Integers
- 【LeetCode】P029_DivideTwoIntegers
- leetcode-29 Divide Two Integers
- LeetCode-Divide Two Integers
- leetcode29 Divide Two Integers
- leetcode:29. Divide Two Integers
- LeetCode OJ:Divide Two Integers
- LeetCode Divide Two Integers
- LeetCode:Divide Two Integers
- LeetCode 28 Divide Two Integers
- [leetcode] Divide Two Integers