中国教育在线
中国教育在线

国家重点学科
高考分数线
内容推荐
在线答疑
内容推荐
首页 > 高考 > 澳门
第十届全国青少年信息学奥林匹克联赛初赛试题
2010-09-21
作者:信息女士
关注掌上高考


 

4.program program4;

const

  u: array[0..2] of integer = (1, -3, 2);

  v: array[0..1] of integer = (-2, 3);

var

  i, n, sum: integer;

function g(n: integer): integer;

var i, sum: integer;

begin

  sum := 0;

  for i := 1 to n do inc(sum, u[i mod 3] * i);

  g := sum;

end;

begin

  sum := 0;

  read(n);

  for i := 1 to n do inc(sum, v[i mod 2] * g(i));

  writeln(sum);

end.

输入:103

输出:            

 

五.完善程序 (前5空,每空2分,后6空,每空3分,共28分)

 

1.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 program1;

var

    i, k, m, start: longint;

    find: boolean;

function check(remain: integer): boolean;

var result: integer;

begin

    result:=(  ①  ) mod remain;

    if(  ②  )then begin

       start := result; check := true;

    end

    else check := false;

end;

begin

    find := false;

    read(k);

    m := k;

    while (  ③  ) do begin

       find := true; start := 0;

       for i := 0 to k-1 do

           if( not check(  ④  )) then begin

              find := false; break;

           end;

       inc(m);

    end;

    writeln(  ⑤  );

end.

<< < 1 2 3 4 5 6 > >> 共 6 页
免责声明:

① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。

② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

热门推荐
相关新闻
图片
图片