Skip to content

Commit e4bd6ed

Browse files
Update Solution.java
1 parent 891dc6e commit e4bd6ed

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed
Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
class Solution {
2-
private static final int MOD = (int) 1e9 + 7;
32

43
public int nthMagicalNumber(int n, int a, int b) {
5-
int c = a * b / gcd(a, b);
6-
long l = 0, r = (long) (a + b) * n;
7-
while (l < r) {
8-
long mid = l + r >>> 1;
9-
if (mid / a + mid / b - mid / c >= n) {
10-
r = mid;
4+
long lcm = lcm(a, b);
5+
long ans = 0;
6+
// binary search
7+
for (long l = 0, r = (long) n * Math.min(a, b), m = 0; l <= r;) {
8+
m = (l + r) / 2;
9+
if (m / a + m / b - m /lcm >= n) {
10+
ans = m;
11+
r = m - 1;
1112
} else {
12-
l = mid + 1;
13+
l = m + 1;
1314
}
1415
}
15-
return (int) (l % MOD);
16+
return (int) (ans % 1000000007);
1617
}
1718

18-
private int gcd(int a, int b) {
19+
public static long gcd(long a, long b) {
1920
return b == 0 ? a : gcd(b, a % b);
2021
}
21-
}
22+
23+
public static long lcm(long a, long b) {
24+
return (long) a / gcd(a, b) * b;
25+
}
26+
}

0 commit comments

Comments
 (0)