Дерево рациональных чисел
Задача по программированию с проверкой онлайн
- Сложность
- Средняя
- Языки
- Python
- JavaScript
- TypeScript
- Java
- Go
- Темы
- Математика
- Деревья и графы
Бесконечное полное двоичное дерево устроено так: корень — 1/1, а у вершины p/q левый потомок — p/(p+q), правый — (p+q)/q. Обход по уровням слева направо даёт последовательность 1/1, 1/2, 2/1, 1/3, 3/2, 2/3, 3/1, …; каждое положительное рациональное число встречается в ней ровно один раз. Номера позиций начинаются с 1.
Функция получает kind, a и b:
- при
kind = 1верните[p, q]— числитель и знаменатель элемента на позицииa(1 ≤ a < 2^53);bравно 0; - при
kind = 2верните[n]— позицию дробиa/b, гдеaиbвзаимно просты, а позиция меньше2^53.
Пример: 1, 5, 0 → [3, 2]; 2, 3, 2 → [5].
Источник: Coding Competitions Archive, kickstart/2013/round_a/rational_number_tree · © Google LLC · Apache-2.0 · условие переведено и дополнено
Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).