作业帮 > 综合 > 作业

Pascal程序,很急!

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/04/29 16:14:17
Pascal程序,很急!
N个小朋友手拉手站成一个圆圈,从第一个小朋友开始循环报数,报到M的那个小朋友退到圈外,然后他的下一位重新报“1”.这样继续下去,直到最后只剩下一个小朋友,他原来站在什么位置上呢?
最好能解释一下
Pascal程序,很急!
//这是约瑟夫问题,有很多种解法,以下是一种模拟方法,第12行去掉注释,就是整个出列的过程.//Josephus0.pas
var a:array[1..100] of boolean;
n,m,t,f,s:integer;
begin
       readln(n,m);
       repeat
              inc(t);
              if t>n then t:=1;
              if not a[t] then inc(s);
              if(s=m) then begin 
                      s:=0;
                      //write(t,' '); 
                      a[t]:=true;
                      inc(f); 
              end;
       until(f=n);
       writeln(t);
end.