Весенние старты 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)


Рецензии
До чего же детишки должны быть умны, чтобы решать такое:-))с уважением. удачи в творчестве.

Александр Михельман   04.05.2026 19:25     Заявить о нарушении