约瑟夫环
[问题来源] 名题
[问题描述] 猴子选大王:一群(M)猴子排成一列,数到N的退出,直到剩下一个.
输入:[KEYBOARD] 输出:[SCREEN]
5 3
2
[问题分析] 按照方法模拟即可.
program JOSR;
const mmax=100;
var m,n,j:integer;
rou:array[1..mmax] of boolean;procedure init;
var i:integer;
begin
write('Please input M:');readln(m);
write('Please input N:');readln(n);
for i:=1 to m do rou[i]:=true;
j:=0;
end;
procedure check;
var i,k:integer;
begin
i:=0;k:=0;
repeat
inc(k);
if k>m then k:=1;
if rou[k]=true then begin
inc(i);
if i mod n=0 then begin rou[k]:=false;inc(j);end;
end;
until j=m-1;
end;
procedure print;
var i:integer;
begin
for i:=1 to m do if rou[i]=true then writeln(i);
end;
begin
init;
check;
print;
readln;
end.