Задача 8. Считалка

N человек, пронумерованных числами от 1 до N стоят в кругу. Они начинают играть в считалку на выбывание, где каждый K-й по счету человек выбывает из круга, после чего счет продолжается со следующего за ним человека.

На вход подаётся количество человек N и номер K. Напишите программу, которая выводит число от 1 до N — это номер человека, который останется в кругу последним.

Пример:

Кол-во человек: 5
Какое число в считалке? 7
Значит, выбывает каждый 7 человек

Текущий круг людей: [1, 2, 3, 4, 5]
Начало счёта с номера 1
Выбывает человек под номером 2

Текущий круг людей: [1, 3, 4, 5]
Начало счёта с номера 3
Выбывает человек под номером 5

Текущий круг людей: [1, 3, 4]
Начало счёта с номера 1
Выбывает человек под номером 1

Текущий круг людей: [3, 4]
Начало счёта с номера 3
Выбывает человек под номером 3

Остался человек под номером 4

Решение:

piople = int(input('Кол-во человек: '))
dropped = int(input('Какое число в считалке? '))
print('Значит, выбывает каждый', dropped, 'человек.')
piople_list = list(range(1, piople + 1))
out = 0

for _ in range(piople - 1):
    print('\nТекущий круг людей', piople_list)
    start_count = out % len(piople_list)
    out = (start_count + dropped - 1) % len(piople_list)
    print('Начало счёта с номера', piople_list[start_count])
    print('Выбывает человек под номером', piople_list[out])
    piople_list.remove(piople_list[out])

print('\nОстался человек под номером', *piople_list)

3820login-checkЗадача 8. Считалка

Добавить комментарий