// Source : https://oj.leetcode.com/problems/divide-two-integers/
// Author : Hao Chen
// Date : 2014-06-20
/**********************************************************************************
*
* Divide two integers without using multiplication, division and mod operator.
*
*
**********************************************************************************/
#include
#include
#include
using namespace std;
int divide(int dividend, int divisor) {
int sign = 1;
long long dvd = dividend;
long long dvs = divisor;
if (dvd<0) {
dvd = -dvd;
sign = -sign;
}
if (dvs<0) {
dvs = -dvs;
sign = -sign;
}
long long bit_num[32];
memset( bit_num, 0, sizeof(bit_num)/sizeof(bit_num[0]) );
int i=0;
long long d = dvs;
bit_num[i] = d;
while( d <= dvd ){
bit_num[++i] = d = d << 1;
}
i--;
unsigned int result = 0;
while(dvd >= dvs){
if (dvd >= bit_num[i]){
dvd -= bit_num[i];
result += (1<