C. Новогоднее настроение

Великий математик Виталий Евгеньевич каждый Новый год проводит на работе. Коллеги всегда любили и ценили его, поэтому в этом году решили сделать ему сюрприз — украсить кабинет учёного математическими ёлками. Помогите математикам и напишите программу, которая по введённому числу строит математическую ёлку.

Формат ввода

Вводится одно натуральное число — количество чисел в математической ёлке.

Формат вывода:

Требуемая новогодняя ёлка.

Пример

Ввод

14

Вывод

1
2 3
4 5 6
7 8 9 10
11 12 13 14

Ввод

6

Вывод

1
2 3
4 5 6

Решение

Основная сложность – понять как организовать работу внутреннего цикла и прервать его выполнение в нужный момент. Так же зачастую вызывает трудности определение какими типами циклов лучше пользоваться.

Внешний цикл удобнее всего организовать с помощью while. Условием выхода из него будет достижение счетчиком предельного значения. Сам счетчик это число, которое мы будем печатать в елке.

Внутренний цикл будет печатать нужное количество чисел. В первой строке – одно, во второй – два и т.д. В цикле мы будем проверять не достигло ли число предельного значения и если да, прекращать цикл с помощью break.

Несмотря на то, что задача находится в разделе вложенные циклы, она имеет решение без использования вложенных циклов, базирующееся на материалах прошлого раздела. И это решение более лаконично.

Посмотреть код

Решение

Python
# Решение с вложенными циклами

dim = int(input())

count = 1
num = 1

while num <= dim:
    for i in range(count):
        if num > dim:
            break
        print(num, end=' ')
        num += 1
    print()
    count += 1

Решение

Python
# Решение с одни циклом

finish = int(input())

limit = 1
current = 0

for pos in range(finish):
    current += 1
    print(pos + 1, end=' ')
    if current == limit:
        print()
        limit += 1
        current = 0
Подписаться
Уведомить о
guest
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Владислав
Владислав
07.08.2024 16:56

У меня такое получилось, приняло, правда, не понимаю, почему пространство пустоты в прогрессии от введенного числа внизу появляется.
chislo = int(input())
c = ”
levo = 0
pravo = 2
for i in range(1, chislo + 1):
    for j in range(1, chislo + 1):
        if levo < j < pravo:
            if c == ”:
                c = ” + str(j)
            else:
                c = c + ‘ ‘ + str(j)
    print(c)
    c = ”
    pravo = pravo + i + 1
    levo = levo + i