X Tutup
// 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<
X Tutup