第十二届全国青少年信息学奥林匹克联赛初赛试题讲解

作者&投稿:侨苛 (若有异议请与网页底部的电邮联系)
  2.只有一堆时,无论有多少,先取者都可以一次性全部取走,所以必胜。

  (1,1)时,显然先取者必败。
  (1,2)时,先取者必胜,他可以在2那一堆中取1个,于是变成(1,1),但这成为上一种情况了,于是接下来取的人必败,亦即先取者必胜。
  (1,3)时,先取者必胜。他可以在3那一堆中取2个,于是变成(1,1)。
  (2,2)时,先取者必败。他在任何一堆中取1个,对方随即在另一堆中取1个,即变成(1,1);如果他取走一堆中的全部石子,对方即取走另一堆中的全部石子。
  (2,3)时,先取者必胜。他可以在3那一堆中取1个,于是变成(2,2)。
  (3,3)时,先取者必败。他取走任一堆中的1,2或3个,就变成了以上讨论过的情形。

  (1,1,1)时,先取者必胜。他取走任一堆,就变成了(1,1)。
  (1,1,2)时,先取者必胜。他取走2那一堆,就变成了(1,1)。
  (1,1,3)时,先取者必胜。他取走3那一堆,就变成了(1,1)。
  (1,2,2)时,先取者必胜。他取走1那一堆,就变成了(2,2)。
  (1,2,3)时,先取者必败。分析如下:
  他先取1那一堆,则变为(2,3),由上面的分析,对手必胜。
  他从2那一堆中取1个,就变成了(1,1,3),对手可以将3那一堆全部取走,变成了(1,1),于是必胜。
  他将2那一堆全部取走,就变成了(1,3),对手必胜。
  他从3那一堆中取1个,就变成了(1,2,2),对手必胜。
  他从3那一堆中取2个,就变成了(1,2,1),对手必胜。
  他将3那一堆全部取走,就变成了(1,2),对手必胜。

  这些胜负有什么规律呢?我们可以将每堆的数转换成二进制,然后看每一位上所有堆里的1的个数总和:
  必胜情况:(n) (1,2)(1,3)(2,3) (1,1,1)(1,1,2)(1,2,2)
  必败情况: (1,1)(2,2)(3,3) (1,2,3)

  化为二进制:
  必胜情况:
  (n)<只有1堆>:……(反正每位只要有1肯定只有1个)
  (1,2):1,10
  列成竖式:
  01
  10
  个位上只有1个1,“十位”(因为是二进制所以叫十位不妥,这里为了方便说明暂且使用,下同)上也只有1个1。
  (1,3):1,11
  列成竖式:
  01
  11
  个位上有2个1(1的1个,3的1个),十位上有1个1。
  (2,3):10,11
  个位上有1个1,十位上有2个1。
  (1,1,1):1,1,1
  个位上有3个1。
  (1,1,2):1,1,10
  个位上有2个1,十位上有1个1。
  (1,1,3):1,1,11
  个位上有3个1,十位上有1个1。
  (1,2,2):1,10,10
  个位上有1个1,十位上有2个1。

  必败情况:
  (1,1):1,1
  个位上有2个1。
  (2,2):10,10
  十位上有2个1。
  (3,3):11,11
  个位上有2个1,十位上也有2个1。
  (1,2,3):1,10,11
  个位上有2个1,十位上也有2个1。

  下面分析一下这些情况。
  先看必败情形。容易发现,所有的必败情形,都是所有的数位上都有偶数个1。
  下看必胜情形。我们发现,出现了两种情况:
  1.只有1位上有奇数个1,如(1,3)(2,3)(1,1,1)(1,1,2)(1,2,2)。而先取者取走该位上的1,所有的位上就都变成了偶数个1,而这时后取者变成了先取者。
  2.有若干位上都是奇数个1,如(n)(1,2)(1,1,3)。先取者取(不一定取走哪位)后,所有的位上也都变成了偶数个1。后取者变成了先取者。
  以上两种情况,都是将后取者逼至必败情况从而取胜。

  由以上分析我们可以得到结论:将所有的堆的石子数化为二进制后,如果所有数位上的1的个数都是偶数,那么先取者必败;如果有些位上的1的个数是奇数,先取者能够将所有数位上的1的个数都变为偶数的话,那么先取者必胜。

  好,下面来分析我们的题目。
  3,5,7,19,50化为二进制是:
  000011
  000101
  000111
  010011
  110010
  可见,只有最高位的1是奇数个,其他位上都是偶数个。
  所以只需要将最高位的1取走即可必胜。
  二进制的100000就是10进制的32,所以要将50个石子的那堆取32个,取掉就变成偶数个数目。于是先取者必胜。以后无论对方怎么取,始终保证每一位上的1的个数是偶数即可(一种简单的方法是,他在一堆中取几个,你在另一堆中也取几个就可以)。

  16. 5个数通过7次比较排序的方法如下。

  5个数之间的大小关系构成的一个树形图T。T中的一个结点代表一个数,而一条边代表它所

  关联的两个数的大小关系,T的根就是中位数。显然T中的一条边要由一次比赛来确定。在
  下
  面的图中,如果x大于y,则节点x在节点y的上方且x和y有一条边相连。另外,*表示一般的

  数,o表示下一次即将进行比较的两个数。

  第1步,先任取两个数比较,结果为:

  *
  |
  * o o *

  第2步,再取另外两个数比较,结果为:

  o o
  | |
  * * *

  第3步,按照上图比较其中两个标记为o的数,比较结果只有一种情况:

  *
  / \
  o *
  |
  * o

  第4步,按照上图比较其中两个标记为o的数,比较结果有两种情况:

  o o *
  \ / \ / \
  * * * *
  | / \
  * o o

  第5步,按照上图比较其中两个标记为o的数,比较结果有两种情况:

  * *
  | / \
  * * o
  / \ |
  o o o
  | |
  * *

  第6步,按照上图比较其中两个标记为o的数,比较结果有三种情况:

  * * *
  | | / \
  * * o o
  | | \ /
  * * *
  | / \ |
  * o o *
  |
  *
  其中第一种情况已经排好序了
  第7步,按照上图比较其中两个标记为o的数,比较结果只有一种情况:

  *
  |
  *
  |
  *
  |
  *
  |
  *

  所以只需要7步比较就可以把5个数排好序

  10.D

  另外,给你一份试卷及答案。

  十二届全国青少年信息学奥林匹克联赛初赛试题
  ( 普及组 Pascal 语言 二小时完成 )
  ● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

  一、 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。
  1. 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是( )。
  A. 沃尔夫奖 B. 诺贝尔奖 C. 菲尔兹奖 D. 图灵奖
  2. 在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。
  A. gcc/g++ B. Turbo Pascal
  C. RHIDE D. free pascal
  3. 以下断电之后仍能保存数据的有( )。
  A. 寄存器 B. ROM C. RAM D. 高速缓存
  4.Linux是一种( )。
  A. 绘图软件 B. 程序设计语言 C. 操作系统 D. 网络浏览器
  5. CPU是( )的简称。
  A. 硬盘 B. 中央处理器 C. 高级程序语言 D. 核心寄存器

  6. 在计算机中,防火墙的作用是( )。
  A. 防止火灾蔓延 B.防止网络攻击
  C. 防止计算机死机 D. 防止使用者误删除数据
  7. 在下列关于计算机语言的说法中,不正确的是( )。
  A. Pascal和C都是编译执行的高级语言
  B. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上
  C. C++是历史上的第一个支持面向对象的计算机语言
  D. 与汇编语言相比,高级语言程序更容易阅读
  8. 在下列关于计算机算法的说法中,不正确的是( )。
  A. 一个正确的算法至少要有一个输入
  B. 算法的改进,在很大程度上推动了计算机科学与技术的进步
  C. 判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性
  D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法
  9. 在下列各种排序算法中,不是以"比较"作为主要操作的算法是( )。
  A. 选择排序 B. 冒泡排序 C. 插入排序 D. 基数排序
  10.在编程时(使用任一种高级语言,不一定是Pascal),如果需要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( )。
  A. 没有区别 B. 按行读的方式要高一些
  C. 按列读的方式要高一些 D. 取决于数组的存储方式。
  11.在Pascal语言中,表达式 (21 xor 2)的值是( )
  A. 441 B. 42 C.23 D.24
  12.在Pascal语言中,判断a不等于0且b不等于0的正确的条件表达式是( )
  A. not a=0 or not b=0 B. not((a=0)and(b=0))
  C. not(a=0 and b=0) D. (a<>0)and (b<>0)
  13.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:"进,出,进,进,进,出,出,进,进,进,出,出"。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。
  A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7
  C. 1, 4, 3, 7, 6 D. 1, 4, 3, 7, 2
  14.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为( )。
  A. 10 B. 11 C. 12 D. 13
  15. 与十进制数1770 对应的八进制数是( )。
  A. 3350 B. 3351 C. 3352 D. 3540
  16.将5个数的序列排序,不论原先的顺序如何,最少都可以通过( )次比较,完成从小到大的排序。
  A. 6 B. 7 C. 8 D. 9
  17. 设A=B=D=true,C=false,以下逻辑运算表达式值为真的有( )。
  A. (A∧B)∨(C∧D) B. ((A∨B∨D)∧C)
  C. A∧(B∨C∨D) D. (A∧B∧C)∨ D
  18. (2010)16 + (32)8的结果是( )。
  A. (8234)10 B. (202B)16
  C. (20056)8 D. (100000000110)2
  19. 设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有( )。
  A. a, b, c, e, d B. b, c, a, e, d
  C. a, e, c, b, d D. d, c, e, b, a
  20. 已知6个结点的二叉树的先根遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 6 4 1,则该二叉树的可能的中根遍历是( )
  A. 3 2 1 4 6 5 B. 3 2 1 5 4 6
  C. 2 1 3 5 4 6 D. 2 3 1 4 6 5
  二.问题求解(共2题,每题5分,共计10分)
  1.(寻找假币) 现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要称几次,就可以找出假币?你还要指出第1次的称重方法。请写出你的结果:_________________________________________________。
  2.(取石子游戏) 现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果:
  _________________________________________________。
  三.阅读程序写结果(共4题,每题8分,共计32分)
  1. Program ex301;
  var
  u:array[0..3] of integer;
  i,a,b,x,y:integer;
  begin
  y:=10;
  for i:=0 to 3 do
  read(u[i]);
  a:=(u[0]+u[1]+u[2]+u[3]) div 7;
  b:=u[0] div ((u[1]-u[2]) div u[3]);
  x:=(u[0]+a+2)-u[(u[3]+3) mod 4];
  if (x>10) then
  y:=y+(b*100-u[3]) div (u[u[0] mod 3]*5)
  else
  y:=y+20+(b*100-u[3]) div (u[u[0] mod 3]*5);
  writeln (x,',',y);
  end. {*注:本例中,给定的输入数据可以避免分母为0或下标越界。 }
  输入:9 3 9 4
  输出:_______________
  2.Program ex302;
  const
  m:array[0..4] of integer=(2,3,5,7,13);
  var
  i,j:integer;
  t: longint;
  begin
  for i:=0 to 4 do
  begin
  t:=1;
  for j:=1 to m[i]-1 do
  t:=t*2;
  t:=(t*2-1)*t;
  write (t,' ');
  end;
  writeln;
  end.
  输出:____________________
  3.Program ex303;
  Const
  NN=7;
  Type
  Arr1=array[0..30] of char;
  var
  s:arr1;
  k,p:integer;
  Function fun(s:arr1; a:char;n:integer):integer;
  var
  j:integer;
  begin
  j:=n;
  while (a<s[j])and(j>0) do dec(j);
  fun:=j;
  end;
  begin
  for k:=1 to NN do
  s[k]:=chr(ord('A')+2*k+1);
  k:=fun(s,'M',NN);
  writeln(k);
  end.
  输出:_____________
  4.program ex304;
  var
  x,x2:longint;
  procedure digit(n,m:longint);
  var n2:integer;
  begin
  if(m>0) then
  begin
  n2:=n mod 10;
  write(n2:2);
  if(m>1) then digit(n div 10,m div 10);
  n2:=n mod 10;
  write(n2:2);
  end;
  end;
  begin
  writeln('Input a number:');
  readln(x);
  x2:=1;
  while(x2<x) do x2:=x2*10;
  x2:=x2 div 10;
  digit(x,x2);
  writeln; 5
  end.
  输入:9734526
  输出:______________________________
  四.完善程序 (前4空,每空2.5分,后6空,每空3分,共28分)
  1.(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):
  123 132 213 231 321
  312
  程序:
  Program ex401;
  Var
  i,n,k:integer;
  a:array[1..10] of integer;
  count:longint; {变量count记录不同排列的个数,这里用于控制换行}
  Procedure perm(k:integer);
  var j,p,t:integer;
  begin
  if ① then
  begin
  inc(count);
  for p:=1 to k do
  write(a[p]:1);
  write(' ');
  if ( ② ) then writeln;
  exit;
  end;
  for j:=k to n do
  begin
  t:=a[k]; a[k]:=a[j]; a[j]:=t;
  ③ ;
  t:=a[k]; ④ ;
  end
  end;
  begin
  writeln('Entry n:');
  read(n);
  count:=0;
  for i:=1 to n do a[i]:=i;
  ⑤ ;
  end.
  2. 由键盘输入一个奇数 P (P<100,000,000),其个位数字不是5,求一个整数 S,使 P×S = 1111...1 ( 在给定的条件下,解 S 必存在)。要求在屏幕上依次输出以下结果:
  (1)S 的全部数字。除最后一行外,每行输出 50 位数字。 (2) 乘积的数字位数。
  例1:输入p=13,由于13*8547=111111,则应输出(1)8547,(2)6
  例2:输入p=147,则输出结果应为(1)755857898715041572184429327286470143613
  (2)42,即等式的右端有42个1。
  程序:
  program ex402;
  var
  p,a,b,c,t,n:longint;
  begin
  while (true) do
  begin
  writeln ('Input p, the last digit is 1 or 3 or 7 or 9:');
  readln(p);
  if (p mod 2<>0)and(p mod 5<>0) then
  ⑥ ; {如果输入的数符合要求,结束循环 }
  end;
  a:=0; n:=0;
  while (a<p) do
  begin
  a:=a*10+1; inc(n);
  end;
  t:=0;
  repeat
  b:=a div p;
  write(b:1);
  inc(t);
  if ( ⑦ ) then writeln;
  c:= ⑧ ; a:= ⑨ inc(n);
  until c<=0;
  dec(n);
  writeln; writeln('n=', ⑩ );
  end.

  子集那个主要是自己划分,比较费时间,如果不会加我QQ21014873,我教你。

太难了吧!!

第十二届全国青少年信息学奥林匹克联赛初赛试题讲解~

普及组(Pascal语言)参考答案与评分标准
一、单项选择题:(每题1.5分)
1. D 2. B 3. B 4. C 5. B 6.B 7. C 8. A 9. D 10. D
11. C 12. D 13. C 14. B 15. C 16. B 17. B 18. A 19. C 20. B
二、问题求解:(每题 5分)
1. 4次 (1分),
第一步:分成3组:27,27,26,将前2组放到天平上(4分)。
2.有获胜策略(1分),,第1次在第5堆中取32颗石子(4分),。
三、阅读程序写结果
1. 10,10 (对1个数给4分,无逗号扣1分)
2. 6 28 496 8128 33550336
(前2个对1个数给1分,后3个对1个数给2分)
3. 5
4. 6 2 5 4 3 7 9 9 7 3 4 5 2 6(数字之间无空格扣2分)
四、完善程序(前4空(①--④),每空2.5分,后6空(⑤--⑩),每空3分)
1.① k=n (或n=k)
② count mod 5=0
③ perm(k+1)
④ a[k]:=a[j];a[j]:=t
⑤ perm(1)
2.⑥ break
⑦ t mod 50=0
⑧ a-p*b(或a-b*p)
⑨ c*10+1 (或10*c+1)
⑩ n
我也不是很会哎
不过有书的
老师那里应该有得卖

第二十届全国青少年信息学奥林匹克联赛后天才进行比赛,可以参考往届的试题来复习

noi2023获奖名单
答:旨在向那些在中学阶段学习的青少年普及计算机科学知识;给学校的信息技术教育课程提供动力和新的思路;给那些有才华的学生提供相互交流和学习的机会;通过竞赛和相关的活动培养和选拔优秀计算机人才。NOI系列活动包括:全国青少年信息学奥林匹克竞赛和全国青少年信息学奥林匹克网上同步赛、全国青少年信息学奥林匹克...

啥是信息奥赛
答:当年的许多选手已成为计算机硕士、博士,有的已经走上计算机科研岗位。为了在更高层次上推动普及,培养更多的计算机技术优秀人才。竞赛及相关活动遵循开放性原则,任何有条件和兴趣的学校和个人,都可以在业余时间自愿参加。 NOI系列活动包括:全国青少年信息学奥林匹克竞赛和全国青少年信息学奥林匹克网上同步赛、...

oi是什么意思?
答:oi是一个多义词,所指的意思分别是:1、oi指的是信息学奥赛:青少年信息学奥林匹克竞赛,早期称为青少年计算机程序设计竞赛是指在广大青少年中普及计算机教育,推广计算机应用的一项学科性竞赛活动。2、oi指的是氧指数:氧指数是指在规定的条件下,材料在氧氮混合气流中进行有焰燃烧所需的最低氧浓度。以...

noip是什么意思?
答:Noi面向中学阶段学习的青少年。NOIP主要面向于初中和高中阶段的学生。3.赛事安排 Noip主要在每个省份之间考试,而Noi则在每个省份有一定的名额进行选拔,再统一全国比赛。此外,NOI系列活动包括:全国青少年信息学奥林匹克竞赛和全国青少年信息学奥林匹克网上同步赛、全国青少年信息学奥林匹克联赛、冬令营、选拔赛...

信息学奥林匹克竞赛考什么?
答:推广计算机应用的一项学科性竞赛活动。全国从1984年开始举办全国性竞赛。而自从1989年我国参加第一届国际信息学奥林匹克(International Olympiad in Informatics, 简称IOI)以来,全国青少年计算机程序设计竞赛也更名为全国青少年信息学(计算机)奥林匹克竞赛(National Olympiad in Informatics, 简称NOI)。

安顺市第二高级中学的办学条件
答:一等奖1名,三等奖6名。2005年全国高中化学竞赛(贵州赛区)一等奖两名二等奖2名2006年第十五届全国中学生生物联赛一等奖4名,二等奖7名,三等奖5名。贵州省高中化学竞赛获一等奖1名,二等奖3名,全国第十二届青少年信息学奥林匹克联赛贵州赛区提高组获奖名单一等奖1名,...

少儿编程认可的比赛,你知道多少
答:通过该挑战,让中国学生有机会与来自不同的数学及编程爱好者共同竞技,锻炼自己的逻辑思维能力。2020年,来自全国735所国际学校和重点高中的近3000名同学参与不同的等级考试,获得了优异成绩。信息学奥赛CSP/NOIP:NOIP全国青少年奥林匹克联赛自1995年至今由中国计算机学会统一组织。CSP-J/S是信息学奥赛系列...

怎么学信息奥赛
答:信息学奥赛复赛辅导策略全国青少年信息学奥林匹克及其分区联赛活动,意在激发广大青少年对信息技术及其应用的兴趣,比赛对青少年学生开阔眼界,扩大知识面,培养逻辑思维、创造思维及应用计算机解决实际问题的能力都有很大的促进作用。联赛的复赛是对学生进行解决实际问题能力的考核。有些学校复赛成绩不理想,我觉得问题主要出现在两...

高中信息学奥林匹克竞赛考什么?
答:全国从1984年开始举办全国性竞赛。而自从1989年我国参加第一届国际信息学奥林匹克(International Olympiad in Informatics, 简称IOI)以来,全国青少年计算机程序设计竞赛也更名为全国青少年信息学(计算机)奥林匹克(National Olympiad in Informatics, 简称NOI)。2、全国信息学奥林匹克竞赛活动担负着选拔优秀学生...

全国青少年信息学奥林匹克联赛的知识范围
答:试题的知识范围具体如下:全国青少年信息学(计算机)奥林匹克分区联赛竞赛大纲 一、初赛内容与要求:(#表示普及组不涉及,以下同) 计 基算 本机 常的 识 * 诞生与发展  *特点 *在现代社会中的应用* 计算机系统的基本组成* 计算机的工作原理# *计算机中的数的表示* 计算机信息安全基础知识...