約瑟夫問題pascal程式

SSLGZ_yyc發表於2017-01-13

題意

n個人(n<=100)圍成一圈,從第一個人開始報數,數到m的人出列,再由下一個人重新從1開始報數,數到m的人再出圈,……依次類推,直到所有的人都出圈,請輸出依次出圈人的編號.


var
n,m,i,j,tj:longint;
a:array[0..200]of longint;
begin
    read(n,m);
    fillchar(a,sizeof(a),0);
    i:=0;j:=0;tj:=0;
    repeat
         inc(i);
         if i>n then i:=1;
         if (a[i]=0) then
         begin
             inc(j);
             if j=m then
             begin
                 a[i]:=1;
                 j:=0;
                 write(i,' ');
                 inc(tj);
             end;
         end;


    until tj=n;
end.

相關文章