Предмет: Информатика,
автор: gvozdb27
Привет, помогите с задачей (язык Python):
N человек, пронумерованных числами от 1 до N, стоят в кругу. Они начинают играть в считалку на выбывание, где каждый K-й по счёту человек выбывает из круга, после чего счёт продолжается со следующего за ним человека. На вход подаётся количество человек N и номер K. Напишите программу, которая выводит число от 1 до N — это номер человека, который останется в кругу последним.
members = []
n = int(input('Сколько всего человек? '))
number = int(input('Какое число в считалке? '))
print('Значит, выбывает каждый', number, 'человек.\n')
out = 0
members = list(range(1, n + 1))
while len(members) > 1:
``print('Текущий круг людей:', members)
``start_count = out % len(members)
``out = (start_count + number - 1) % len(members)
``print('Начало счёта с номера', members[start_count])
``print('Выбывает человек под номером', members[out])
``print()
``members.remove(out + 1)
print('Остался человек под номером', members)
Проблема, когда остаются 2 человека, вылетает ошибка, она в комментах. Как её исправить?
Ответы
Автор ответа:
19
num = int(input('Кол-во человек: '))
number = int(input('Какое число в считалке? '))
print('Значит, выбывает каждый', number, 'человек.')
mens_list = list(range(1, num + 1))
out = 0
for _ in range(num - 1):
print('Текущий круг людей', mens_list)
start_count = out % len(mens_list)
out = (start_count + number - 1) % len(mens_list)
print('Начало счёта с номера', mens_list[start_count])
print('Выбывает человек под номером', mens_list[out])
mens_list.remove(mens_list[out])
print()
print('Остался человек под номером', mens_list)
Похожие вопросы
Предмет: Английский язык,
автор: svetakravets
Предмет: Русский язык,
автор: nicetaktarova
Предмет: Русский язык,
автор: анзик2
Предмет: Биология,
автор: emilgatin2004забзир
Предмет: Алгебра,
автор: ultramarta
File "main.py", line 15, in
members.remove(out + 1)
ValueError: list.remove(x): x not in list