Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Тут вчера школьники весь день суетились с, насколько понимаю, олимпиадной задачей про места в кинотеатре (...)

Молот Шотландцев Высший разум (302226), закрыт 4 года назад
"В кинотеатре места часто расставляют со сдвигом соседних рядов для удобства зрителей. Пусть в таком кинотеатре N мест в 1-м, 3-м, 5-м и всех нечётных рядах и N + 1 место во 2-м, 4-м и всех чётных рядах. Места в рядах нумеруются от 1 до N в нечётных рядах и от 1 до N + 1 в чётных рядах.

Касса продаёт билеты подряд: сначала в 1-й ряд на места с 1-го по N-е, потом — во 2-й ряд на места с 1-го по N + 1-е, затем в 3-й ряд с 1-го места и т. д.

Определите номер ряда и номер места для K-го проданного билета."

>>>>>
У меня родился свой вариант решения. Но ничай опять не подходит на "Ограничение времени400мс Ограничение памяти512M Ограничение размера стека64M" аль как?
Лучший ответ
Николай Веселуха Высший разум (374417) 4 года назад
А так? :)
АндрейВысший разум (472569) 4 года назад
box = 2 * quantity + 1
Николай Веселуха Высший разум (374417) Андрей, первый ряд нечётный и в нём мест на 1 больше. >>> 1-м, 3-м, 5-м и всех нечётных рядах и N + 1 И вводится количество мест в первом ряду!!
Остальные ответы
Андрей Высший разум (472569) 4 года назад
Зал кинотеатра состоит из блоков по 2 ряда, содержащих 2 * N + 1 мест.
Количество рядов в задаче вообще нет - за ненадобностью.

n, k = int(input()), int(input()) - 1 # проще нумеровать номер билета с нуля
t = k % (2 * n + 1) # номер места внутри блока из двух рядов - от 0 до 2 * n
print('ряд:', k // (2 * n + 1) * 2 + (t >= n) + 1, ' место:', t - n * (t >= n) + 1)
Иван Сигаев Искусственный Интеллект (155516) 4 года назад
n+n+1 - количество мест в двух рядах
делим k на (n+n+1) - получаем номер ряда ( с учетом "парности")
делим "остаток" на n - получаем признак "четности" ряда
остаток - номер места

Зачем использовать циклы - хз
Похожие вопросы