Ctrl K

НОД пар по номеру в сортировке

Сложная
Дан массив values из n положительных чисел. Возьмём все пары индексов i < j и для каждой посчитаем наибольший общий делитель values[i] и values[j]. Получится n · (n - 1) / 2 чисел; отсортируем их по неубыванию. Дан также массив positions. Для каждой позиции positions[k] найдите число, которое стоит на этой позиции (нумерация с нуля) в отсортированном списке НОД, и верните ответы в том же порядке.
Пример 1
values=[6, 9, 4], positions=[0, 1, 2] → [1, 2, 3]

НОД пар: (6, 9) → 3, (6, 4) → 2, (9, 4) → 1. По возрастанию это [1, 2, 3].

Пример 2
values=[8, 12, 8, 5], positions=[5, 0, 4, 4] → [8, 1, 4, 4]

Шесть пар дают НОД 1, 1, 1, 4, 4, 8 (по возрастанию). На позиции 5 стоит 8, на позиции 0 — 1, на позиции 4 — 4. Позиции могут повторяться.

Пример 3
values=[7, 7], positions=[0] → [7]
Ограничения
  • 2 ≤ n = len(values) ≤ 10⁵
  • 1 ≤ values[i] ≤ 5 · 10⁴
  • 1 ≤ len(positions) ≤ 10⁵
  • 0 ≤ positions[k] < n · (n - 1) / 2
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиk-я сумма марками одного номинала СложнаяРовные стопки карт ЛёгкаяРамки одной формы СредняяПары со взаимно простыми цифрами ЛёгкаяПростые числа на лучах сетки Средняя
загружаем Python…
Вход
values=[6, 9, 4], positions=[0, 1, 2]
Ожидается
[1, 2, 3]

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