Ctrl K

Без среднего посередине

Средняя
Нужно выстроить числа от 1 до n (каждое ровно один раз) так, чтобы никакое число не стояло между двумя другими, средним арифметическим которых оно является. Иначе говоря, для любых позиций i < k < j должно быть 2 · a[k] ≠ a[i] + a[j]. Таких порядков много, поэтому нужен вот этот: - для n = 1 это [1]; - иначе сначала идут все нечётные числа, потом все чётные. Нечётные стоят в порядке, построенном для ⌈n/2⌉, где каждое x заменено на 2x − 1; чётные — в порядке для ⌊n/2⌋, где каждое x заменено на 2x. Верните этот порядок. Подумайте, почему в нём действительно нет ни одного «среднего посередине».
Пример 1
n=5 → [1, 5, 3, 2, 4]

Нечётные 1, 3, 5 получаются из порядка для 3 — это [1, 3, 2] — заменой x на 2x − 1: [1, 5, 3]. Чётные 2, 4 — из порядка для 2, [1, 2], заменой x на 2x: [2, 4]. Итог [1, 5, 3, 2, 4].

Пример 2
n=2 → [1, 2]

Сначала нечётное 1, затем чётное 2.

Пример 3
n=8 → [1, 5, 3, 7, 2, 6, 4, 8]
Ограничения
  • 1 ≤ n ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлижайшие к базе точки СредняяДругие порядки для того же дерева поиска СложнаяБлижайшая пара датчиков СложнаяПовернуть квадрат по часовой СредняяСамая прибыльная серия дней Средняя
загружаем Python…
Вход
n=5
Ожидается
[1, 5, 3, 2, 4]

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