用out来记录小朋友的状态true为已经退出,false为还在圈内
我的算法:我们开始“报数”,每一轮报数游戏都会出去一个人,所以一共进行11轮报数
进行报数时,如果轮到的小朋友已经出圈了,我们就用while继续往后找直到找到一个没有报数的人,然后把第7个这样找到的人退出去,继续进行下一轮报数
每当一个小朋友x退出去,我们就out[x]:=true
n:=12;
now:=0;
for t:=1 to n-1 do //一共进行n-1轮报数游戏
begin
for i:=1 to 7 do
begin
now:=now mod n+1; //由于是一个圈,我们要mod使其可以循环
while out[now] do now:=now mod n+1; //当 now已经出圈了,我们继续找 直到找到
end;
out[now]:=true; //将这个第7个报数的退出去
end;
for i:=1 to n do //当前还没有出圈的就是我们需要的答案
if not out[i] then ans:=i;