-
Notifications
You must be signed in to change notification settings - Fork 94
Expand file tree
/
Copy pathdivide-two-integers.cpp
More file actions
32 lines (32 loc) · 964 Bytes
/
divide-two-integers.cpp
File metadata and controls
32 lines (32 loc) · 964 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
class Solution {
public:
const int _MAX = -1073741824;
void div(int ÷nd, int divisor, int &cnt, int depth) {
if(dividend > divisor)
return;
if(divisor > _MAX)
div(dividend, divisor + divisor, cnt, depth + depth);
while(dividend <= divisor) {
dividend -= divisor;
cnt += depth;
}
}
int divide(int dividend, int divisor) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int cnt = 0;
bool isminus = false;
if(dividend < 0) {
isminus = !isminus;
} else {
dividend = -dividend;
}
if(divisor < 0) {
isminus = !isminus;
} else {
divisor = -divisor;
}
div(dividend, divisor, cnt, 1);
return isminus?-cnt:cnt;
}
};