Skip to content

Commit ac4d499

Browse files
authored
Binary Search Example
1 parent 2f5bb79 commit ac4d499

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
int countMultiples(long long x, long long a, long long b) {
2+
// get # of multiples of a or b in range [1, x]
3+
long long lcm = a * b / __gcd(a, b);
4+
return x/a + x/b - x/lcm;
5+
}
6+
7+
class Solution {
8+
public:
9+
int nthMagicalNumber(int n, int a, int b) {
10+
// a = 2, b = 3 in our example
11+
long long lo = 1, hi = min(a, b) * 1LL * n, mod = 1e9 + 7;
12+
while(lo < hi) {
13+
long long mid = lo + (hi - lo) / 2;
14+
if (countMultiples(mid, a, b) < n)
15+
lo = mid + 1;
16+
else
17+
hi = mid;
18+
}
19+
return hi % mod;
20+
}
21+
};

0 commit comments

Comments
 (0)