Skip to content

Commit b30b434

Browse files
authored
Create 786-k-th-smallest-prime-fraction.js
1 parent ace2fb9 commit b30b434

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

786-k-th-smallest-prime-fraction.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* @param {number[]} A
3+
* @param {number} K
4+
* @return {number[]}
5+
*/
6+
const kthSmallestPrimeFraction = function(A, K) {
7+
let ans = []
8+
let left = 0.0
9+
let right = 1.0
10+
while (right - left > 1e-9) {
11+
const mid = left + (right - left) / 2
12+
const { count, p, q } = maxUnder(mid, A)
13+
if (count >= K) {
14+
ans = [p, q]
15+
right = mid
16+
} else {
17+
left = mid
18+
}
19+
}
20+
return ans
21+
22+
function maxUnder(x, primes) {
23+
let [p, q] = [0, 1]
24+
let count = 0
25+
let l = -1
26+
for (let r = 1; r < primes.length; r++) {
27+
while (primes[l + 1] < primes[r] * x) {
28+
l += 1
29+
}
30+
count += l + 1
31+
if (l >= 0 && p * primes[r] < q * primes[l]) {
32+
;[p, q] = [primes[l], primes[r]]
33+
}
34+
}
35+
return { count, p, q }
36+
}
37+
}

0 commit comments

Comments
 (0)