-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathDivide Two Integers.cpp
More file actions
38 lines (36 loc) · 868 Bytes
/
Divide Two Integers.cpp
File metadata and controls
38 lines (36 loc) · 868 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution
{
public:
int divide(int dividend, int divisor)
{
long long llDividend = dividend;
long long llDivisor = divisor;
int negative = false;
if (llDividend < 0)
{
negative = !negative;
llDividend = -llDividend;
}
if (llDivisor < 0)
{
negative = !negative;
llDivisor = -llDivisor;
}
long long quotient = 0;
while (llDividend >= llDivisor)
{
int n = 1;
while ((llDividend >> n) >= llDivisor)
{
n += 1;
}
quotient += (1 << (n - 1));
llDividend = llDividend - (llDivisor << (n - 1));
}
if (negative)
{
quotient = -quotient;
}
return quotient;
}
};