题目
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
题解
可爱的模拟,用链表模拟,直接模拟都可以
我是链表模拟
时间复杂度O(nm)
代码
var
n,i,j,m,e:longint;
a,next:array[1..100]of longint;
begin
readln(n,m);
for i:=1 to n do
begin
a[i]:=i;
next[i]:=i+1;
end;
e:=n;next[n]:=1;
for i:=1 to n do
begin
for j:=1 to m-1 do e:=next[e];
write(a[next[e]],' ');
next[e]:=next[next[e]];
end;
end.