上面两位是不是脑壳进水了?? readln(n,m);j:=m;tmd:=n
for i:=1 to n do
a[i]:=i;
repeat
while j<=tmd do
begin
for k:=j+1 to tmd do
a[k-1]:=a[k];
dec(tmd); j:=j+m;
end;
j:=j-tmd;
until tmd=1;
writeln(a[1]); tmd表示还剩多少猴子..剩一个猴子时退出、i是循环变量,将a[i]:=i 是把对应的序号存在数组里,便于最后输出序号j是指针,j每次增大m,也就是说m的倍数序号的猴子都被踢出去 for k:=j+1 to tmd do
a[k-1]:=a[k];
是指去掉一个猴子后,其余的猴子都往前面走。 j:=j-n;
意为 当while循环不执行时,j必然大于了tmd,因为猴子围成一圈,所以j-tmd后,j就进入正常轨道。
3+4=7
7-3=4