Skip to content

Commit 326a6fc

Browse files
authored
Update 1201-ugly-number-iii.js
1 parent 9844c15 commit 326a6fc

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

1201-ugly-number-iii.js

+43
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,46 @@ const nthUglyNumber = function(n, a, b, c) {
2828
return b === 0 ? a : gcd(b, a % b)
2929
}
3030
};
31+
32+
// another
33+
34+
/**
35+
* @param {number} n
36+
* @param {number} a
37+
* @param {number} b
38+
* @param {number} c
39+
* @return {number}
40+
*/
41+
var nthUglyNumber = function (n, a, b, c) {
42+
const {floor} = Math
43+
let lo = 1,
44+
hi = 2 * (1e9 | 0)
45+
;(a = BigInt(a)), (b = BigInt(b)), (c = BigInt(c))
46+
let ab = (a * b) / gcd(a, b)
47+
let bc = (b * c) / gcd(b, c)
48+
let ac = (a * c) / gcd(a, c)
49+
let abc = (a * bc) / gcd(a, bc)
50+
51+
while (lo < hi) {
52+
let mid = lo + ((hi - lo) >> 1)
53+
let cnt =
54+
floor(mid / Number(a)) +
55+
floor(mid / Number(b)) +
56+
floor(mid / Number(c)) -
57+
floor(mid / Number(ab)) -
58+
floor(mid / Number(bc)) -
59+
floor(mid / Number(ac)) +
60+
floor(mid / Number(abc))
61+
if (cnt < n) {
62+
lo = mid + 1
63+
} else {
64+
hi = mid
65+
}
66+
}
67+
68+
return lo
69+
70+
function gcd(a, b) {
71+
return b ? gcd(b, a % b) : a
72+
}
73+
}

0 commit comments

Comments
 (0)