Привет с задачей (язык 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 человека, вылетает ошибка, она в комментах. Как её исправить?

egorjanov2200 egorjanov2200    3   18.08.2021 04:08    123

Ответы
parenvpolotencp00o5i parenvpolotencp00o5i  17.09.2021 06:13

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)

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика