首页 > 试题广场 >

Joseph有名的约瑟夫问题(又称猴子选大王问题) 题目描述

[填空题]
Joseph有名的约瑟夫问题(又称猴子选大王问题)
题目描述:
原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,…,n。从编号是1的人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,…,如此反复直到所有的人全部出列为止。比如当n=6,m=5的时候,出列的顺序依次是5,4,6,2,3,1。
现在的问题是:假设有k个好人和k个坏人。好人的编号的1到k,坏人的编号是k+1到2k。我们希望求出m的最小值,使得最先出列的k个人都是坏人。
输入:
仅有的一个数字是k(0 < k <14)。
输出:
使得最先出列的k个人都是坏人的m的最小值。
输入样例:
4
输出样例:
30
程序:
program program2;
var
   i, k, m, start: longint;
   find: boolean;
function check(remain: integer): boolean;
var
     result: integer;
begin
    result:=(  1  ) mod remain;
    if(  2  )then
    begin
        start := result; check := true;
    end
    else
        check := false;
end;
begin
    find := false;
    read(k);
    m := k;
    while (  3  ) do
    begin
         find := true; start := 0;
         for i := 0 to k-1 do
              if( not check(  4  )) then
              begin
                  find := false; break;
              end;
              inc(m);
    end;
    writeln(  5  );
end. 

这道题你会答吗?花几分钟告诉大家答案吧!