Nth Magical Number LeetCode solution in JavaScript
1/**2* @param {number} N3* @param {number} A4* @param {number} B5* @return {number}6*/7var nthMagicalNumber = function (N, A, B) {8var temp;9if (B > A) {10temp = A;11A = B;12B = temp;13}14//A is bigger1516var shareFreq = (A + B) / GCD(A, B) - 1;17var numShares = Math.floor(N / shareFreq);18var superN = N + numShares;1920//X+Y = superN2122var X = Math.ceil((superN * B) / (A + B));23var Y = Math.ceil(superN - (superN * B) / (A + B));2425var mod = 10 ** 9 + 7;2627if (X * A <= Y * B) return (X * A) % mod;28else return (Y * B) % mod;29};3031var GCD = function (x, y) {32while (y != 0) {33var t = y;34y = x % y;35x = t;36}37return x;38};