Nth Magical Number LeetCode solution in JavaScript

1
/**
2
* @param {number} N
3
* @param {number} A
4
* @param {number} B
5
* @return {number}
6
*/
7
var nthMagicalNumber = function (N, A, B) {
8
var temp;
9
if (B > A) {
10
temp = A;
11
A = B;
12
B = temp;
13
}
14
//A is bigger
15

16
var shareFreq = (A + B) / GCD(A, B) - 1;
17
var numShares = Math.floor(N / shareFreq);
18
var superN = N + numShares;
19

20
//X+Y = superN
21

22
var X = Math.ceil((superN * B) / (A + B));
23
var Y = Math.ceil(superN - (superN * B) / (A + B));
24

25
var mod = 10 ** 9 + 7;
26

27
if (X * A <= Y * B) return (X * A) % mod;
28
else return (Y * B) % mod;
29
};
30

31
var GCD = function (x, y) {
32
while (y != 0) {
33
var t = y;
34
y = x % y;
35
x = t;
36
}
37
return x;
38
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0