3、 N个人围成一圈玩游戏,按1-N编号,从1号开始,按顺时针方向数数,数到M的出队,当剩下最后一个人时,这个人就是游戏的胜利者,那么,请问,你应该站在什么位置,才能成为胜利者?

3、 N个人围成一圈玩游戏,按1-N编号,从1号开始,按顺时针方向数数,数到M的出队,当剩下最后一个人时,这个人就是游戏的胜利者,那么,请问,你应该站在什么位置,才能成为胜利者?
输入:N M(均小于1000)
输出:胜利者的位置。

program JOSEPHUS;
var     n, m, s, f, t : integer;
        a : array[1..1000] of boolean;
begin
     writeln('input n, m');
     readln(n, m);
     f := 0;
     t := 0;
     s := 0;
     repeat
           t := t+1;
           if t = n+1 then t := 1;
           if a[t] = false then s := s+1;
           if s = m then
           begin
                s := 0;
                a[t] := true;
                f := f+1;
           end;
     until f = n-1;
     for t := 1 to n do
         if a[t] = false then
         begin
            writeln(t);
            break;
         end;
     readln;
end.
posted @ 2010-02-25 16:08  SmartIOI  阅读(817)  评论(0)    收藏  举报
本站采用CC授权如需转载、引用文章,请务必附上作者及来源处。 Creative Commons License