题目描述
n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。
样例输入
10 3
样例输出
3 6 9 2 7 1 8 5 10 4
思路
O(nm)
还在冥思苦想要模拟的小伙伴们要哭了,这道题早已有公式啦~~~但是这道题不能直接输出最后那个人,要输出顺序=_=。
var
a:array[1..100] of longint;
n,m,p,i,j:longint;
begin
readln(n,m);
for i:=1 to n-1 do
a[i]:=i+1;
a[n]:=1;
p:=n;
for i:=1 to n do
begin
for j:=1 to m-1 do
p:=a[p];
write(a[p],' ');
a[p]:=a[a[p]];
end;
end.