Весенние старты 2026 з2
Конкурс юных программистов «Весенние старты» 2026
Номинация "Решение программистских задач"
Автор заданий Г.Б. Рейнгольд
Задача B. Кубики-1 (20 баллов)
Вася строит из кубиков такое сооружение:
Сперва на пол укладывается кубики в виде квадрата, сторона которого представляется нечётным количеством кубиков.
Сверху на него ставятся кубики таким образом, чтобы получился куб. Далее сверху устанавливается куб, сторона которого на два меньше…
И так далее, пока постройку не завершит один кубик.
Посмотрите внимательно рисунок. На нём представлены три проекции получившегося сооружения.
У Васи имеется некоторое количество кубиков. Он хочет построить самое большое сооружение вышеуказанным способом.
Сделать программу, которая подсчитает:
1. общее количество кубиков, которое необходимо для такой постройки;
2. количество кубиков в первом этаже;
3. количество этажей;
4. количество лишних кубиков.
Пример:
Вход – 200
Выход – 153 25 9 47
Формат входных данных: одно целое число >=1 и <=1000000000 (исходное количество кубиков).
Формат выходных данных: строка, в которой 4 целых числа, разделённых пробелами (количество кубиков в первом этаже, общее количество, количество этажей и количество лишних кубиков).
Лимит времени на прохождение одного теста – 1 секунда.
Авторское решение (Python)
# Весенние старты 2026.
# Задача B "Кубики-1"
# Авторское решение
# Автор заданий Рейнгольд ГБ
#
# Для решения этой задачи нужно обладать здравым смыслом,
# немного знать математику,
# уметь работать с переменными, циклами и ветвлениями.
# Желательно знать возведение в степень, но можно и обойтись умножением.
nk = int(input()) # Ввод данных - количество кубиков
ke = 1 # Количество этажей
k = 1 # Сторона (в кубиках) квадрата этажа
nn = 1 # Общее количество кубиков, необходимых для постройки
while nn <= nk: # Главный цикл
k += 2
nn += k ** 3 # Добавляем целый куб со стороной k
ke += k
if nn > nk: # В случае перебора отходим назад
nn -= k ** 3
ke -= k
k -= 2
nl = nk - nn # количество лишних кубиков
# Выводится последовательно:
# количество кубиков, ушедших на постройку,
# количество в первом этаже,
# количество этажей
# и остаток.
print(nn, k**2, ke, nl)
Свидетельство о публикации №226050401575
Александр Михельман 04.05.2026 19:25 Заявить о нарушении