Ребята собрались играть в прятки и решили выбрать водящего по обычным правилам:Все ребята стали в круг и договорились, кто будет первым, кто — вторым, а кто K-ым игроком. Считать договорились до N.Счет начинается с игрока, номер которого меньше (с самого начала — с первого игрока).Игрок, на котором остановился счет, выходит из круга. Счет опять начинается с того игрока из оставшихся, номер которого меньше.Последний оставшийся игрок становится водящим.Задание: определить начальный номер игрока, который становится водящим — Pascal(Паскаль)

Порядок ввода начальных данных:

K
N
Здесь K — количество играющих ребят; N — число, до которого ведется счет.
Порядок вывода результатов:

M
Здесь M — начальный номер игрока, который станет водящим.
Пример ввода:

3
5
Пример вывода:

3

uses crt;
var
a:array[1..100]of integer;
i,j,K,N:integer;
begin
clrscr;
{вводим количество}
repeat
write('Количество ребят от 1 до 100 K=');
readln(K);
until K in [1..100];
{вводим счетчик}
repeat
write('Считать до N=');
readln(N);
until N>0;
{раставляем всех по кругу}
for i:=1 to K do
a[i]:=i;
{начальное значение}
i:=0;
repeat
{вычисляем новое значение}
i:=1+(i+N-1)mod K;
{удаляем человека из круга}
dec(K);
for j:=i to K do
a[j]:=a[j+1];
{выводим результат хода}
for j:=1 to K do
write(a[j],' ');
writeln;
{становимся в новое начало}
i:=0;
until K=1;
writeln;
{выводим результат}
writeln('Ostalsa # ',a[1]);
readln
end.

Leave a Comment

87 − = 84