Ребята во дворе решили поиграть в прятки. Чтобы выбрать ведущего, который будет искать, они решили воспользоваться считалкой. Считалка состоит из k слов и используется следующим образом. Все n ребят становятся в круг, и один из них, начиная с себя, по очереди указывает на ребят в порядке, в котором они стоят по кругу, называя слова считалки.
Тот, на кого указывает считающий, называя последнее слово считалки, выбывает из круга. После этого считалка повторяется сначала, а счет начинается со следующего за выбывшим. Так продолжается до тех пор, пока в круге не останется один человек. Он то и будет ведущим.
Но на этот раз ребята так увлеклись идеей предстоящей игры, что забывали выходить из круга после того, как считающий указывал на них, называя последнее слово считалки. В результате считающий снова указывал на них при следующих повторениях считалки. Ребята заметили это только тогда, когда после очередного повторения считалки считающий снова указал на последнем слове на участника, который уже должен был покинуть круг. Теперь их заинтересовал вопрос – а на скольких ребят в этот момент считающий все еще не указал, что они должны покинуть круг.
Робот Шарп — Семантика — Считалка
Помогите пожалуйста, вот мой код:
a,b=map(int,input().split()) c=[0 for i in range(a)] num=b%a+0-1 for j in range(1,a+2): if 2 in c: break if num >= a: num%=a c[num]+=1 num+=j print(c.count(0))
Но выдаёт неправильные ответы. Посмотрел в дебаггере, но и там не понял в чём ошибка. Пример входныx данных: 6 14 Пример выходных данных 3 Пример входныx данных: 6 13 Пример выходных данных 0
Отслеживать
задан 15 июн 2021 в 14:11
51 1 1 серебряный знак 5 5 бронзовых знаков
Приведите примеры входных данных и правильных и неправильных ответов.
15 июн 2021 в 14:16
Написал примеры данных
15 июн 2021 в 14:17
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
n, k = map(int, input().split()) step = k % n gone = [0] * n i = -1 count = n while True: i = (i + step) % n if gone[i] == 1: break gone[i] = 1; count -= 1 print(count)
Отслеживать
ответ дан 15 июн 2021 в 16:48
3,195 1 1 золотой знак 10 10 серебряных знаков 21 21 бронзовый знак
Не очень понял приведенный код с учетом нейминга переменных, но могу предложить вариант считалочки на бесконечном цикле
import itertools children_count, words_count = (6, 14) ext = [] for ix, c in enumerate(itertools.cycle([_ for _ in range(children_count)])): if not (ix + 1) % words_count: if c in ext: break ext.append(c) print(‘Число ребят — <>’.format(children_count — len(ext)))
Отслеживать
ответ дан 15 июн 2021 в 16:18
Andy Pavlov Andy Pavlov
3,874 9 9 серебряных знаков 16 16 бронзовых знаков
Что вы добавляете к num в конце цикла?
Не b ли там требуется?
А вообще задача эта может решаться без перебора (кто знает, сколько там ребят — вдруг триллион?) с использованием НОК
n — НОК(n,k)/k = n — n / НОД(n,k)
Отслеживать
ответ дан 15 июн 2021 в 14:25
48.7k 1 1 золотой знак 17 17 серебряных знаков 40 40 бронзовых знаков
- python
- python-3.x
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Как сделать калькулятор на Python? | Делаем свой калькулятор
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
Считалка. — Pascal
Задача: Игра, в кругу стоит определённое количество детей, играют в щеталку потом на выбор уберают 1-го ребёнка, и т.д., вывести номер последнего отсавшегося в игре ребёнка. Вот написал прогу но что-то она тупит.Проверьте плз, может что-то опдскажете.
program enykybe; uses crt; var s:string; i,n,m:integer;p:array[0..5] of integer; begin clrscr;randomize; s:=’11111′; writeln(s); p[0]:=0; for i:=1 to 4 do begin p[i]:=random(5)+1; if p[i]=p[i-1] then repeat p[i]:=random(5)+1; until p[i]<>p[i-1]; delete(s,p[i],1); insert(‘0’,s,p[i]); writeln(s); end; writeln; writeln(s); readln end.
Код к задаче: «Считалка.»
Листинг программы
uses crt; var a:array[1..100]of integer; i,j,k,n:integer; begin clrscr; repeat write(‘N:’); readln(n); until (n>1)and(n <=100); <вводим счетчик>repeat write(‘K:’); readln(k); until (k>0)and(k for i:=1 to n do a[i]:=i; i:=0; repeat i:=1+(i+k-1)mod n; dec(n); for j:=i to n do a[j]:=a[j+1]; for j:=1 to n do write(a[j],’ ‘); writeln; dec(i); until n=1; writeln(‘Последним остался № ‘,a[1]); readln end.
Источник: studassistent.ru
Как написать программу считалку
Новое в библиотеке
- Проблемы изучения математики в 3 кла.
- Проверить будет ли число простым — P.
- Сумма цифр числа в Python
- Пузырьковая сортировка в Python
- Алгоритм Эвклида для НОД в Python
- Все материалы библиотеки
Лучшее на сайте
- Онлайн-решебник задач
- MathPad -математический блокнот
- LaTeX+MarkDown редактор формул
- Универсальный калькулятор
- Числовой калькулятор
- Сфоткай и добавь свою задачу
- Решения задач из Сканави
- Характеристика студента онлайн
- Диаграммы и графики онлайн
- Конструктор программ на Паскале
- Самые популярные материалы
- Доска почета: лучшие пользователи
Анекдоты и фразы
«Я всегда задавал себе вопрос, почему меня никто не замечает, но когда в общаге поселили в 404 комнату… «
На сайте всего: 11
Источник: primat.org