Ctrl K

Дроби из простых чисел

Средняя
Дан строго возрастающий массив values: первым идёт 1, остальные элементы — различные простые числа. Дано также число rank. Для каждой пары индексов i < j составим дробь values[i] / values[j]. Все такие дроби различны. Упорядочим их по возрастанию и найдём rank-ю (нумерация с единицы). Верните её в виде [числитель, знаменатель], то есть [values[i], values[j]]. Перебрать все O(n²) дробей просто — попробуйте найти ответ быстрее.
Пример 1
values=[1, 3, 7, 11], rank=4 → [1, 3]

Все дроби по возрастанию: 1/11, 1/7, 3/11, 1/3, 3/7, 7/11. Четвёртая — 1/3.

Пример 2
values=[1, 2, 5], rank=3 → [1, 2]

Дроби: 1/5, 2/5, 1/2. Самая большая, третья, — 1/2.

Пример 3
values=[1, 13], rank=1 → [1, 13]
Ограничения
  • 2 ≤ len(values) ≤ 1000
  • values[0] = 1, остальные элементы — простые числа
  • values строго возрастает, values[i] ≤ 3·10⁴
  • 1 ≤ rank ≤ n·(n − 1) / 2, где n = len(values)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиk ближайших значений СредняяСтудии для записи СредняяТройки с суммой меньше порога СредняяK-е по величине в упорядоченной таблице СредняяТепло в каждый домик Средняя
загружаем Python…
Вход
values=[1, 3, 7, 11], rank=4
Ожидается
[1, 3]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 54 теста на сервере, включая скрытые.