编程题

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 progaram1;

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.

查看答案
赣ICP备20007335号-2