Помощь - Поиск - Пользователи - Календарь
Полная версия: Обратная "считалочка"
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Татка
Приветик! :yessss:

Пожалуйста, помогите, задачку надо до утра решить!
Задачка эта, можно сказать, обратная задачке "считалочка". Тема - динамические структуры данных.
Задача: В задаче о "считалочке" Петя находится на месте i. Сущевствует ли значение k (k-ый удаляемый ребенок) такое, что Петя останется последним ребенком в круге. Написать программу поиска значений k.

Умоляю :molitva: , помогите пожалуйста.
volvo
Я не знаю, как быть с динамическими структурами данных... Их тут просто негде использовать... Если без них - то можно взять вот эту программу: Казнь, задать в ней константу K = N, и изменить основную часть вот так:


Const Peter = ...{ На каком месте находится Петя }
...
Var
 all: TBigReg;
 i, count: integer;
begin
  For i := 1 To n Do
    set_bit(all, i);

  count := 0;
  For i := 1 To n Do
    If down_next(all, k, i)) = Peter Then Begin
      WriteLn('При значении K = ', i); inc(count);
    End;
  if count = 0 Then writeln('Таких значений нет...');
end.
Татка
Ну а можно сюда приплести как-нибудь динамические переменные и указатели? unsure.gif
volvo
Ну, разве что забросить массив All в динамическую память - но это просто извращение:
Var
 all: ^TBigReg;
 i, count: integer;
begin
  New(all);
  For i := 1 To n Do
    set_bit(all^, i);

  count := 0;
  For i := 1 To n Do
    If down_next(all^, k, i)) = Peter Then Begin
      WriteLn('При значении K = ', i); inc(count);
    End;
  if count = 0 Then writeln('Таких значений нет...');

  Dispose(All);
end.
Altair
Наверно тот, кто придумывал задачу, хотел что бы ее решали кольцевым списком.
Когда дети считаются, они в круге стоят, это кольцо, а каждый элемент списка детка ... сопливая :D smile.gif
шучу-шучу smile.gif
Татка
Спасибо всем за ответы. :flowers:
А как решить просто считалочку и посчитать сколько кругов пройдет считалочка? huh.gif
AGENT_KGB
День добрый! Народ помогите решить похожую задачку:

Создать кольцевой список из N игроков. Разработать объект обеспечивающий реализацию игры в считалочку. Выбирается некоторое случайное число Rn. Если число больше числа игроков N, тогда для счета берется остаток от деления по модулю Rn на N. По найденному числу удаляется игрок - соответствующий элемент списка. Процесс выбора случайного числа продолжается пока не останется пследний игрок - победитель. Каждый запуск обеспечивает 10 различных игр. Получить список выигравших номеров.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.