nbhkdz.com冰点文库

1999年—2011年信息学奥赛提高组初赛试题PASCAL(附答案


历届全国青少年 信息学奥林匹克联赛 初赛试题
(提高组 Pascal 语言)

目录
第十七届全国青少年信息学奥林匹克联赛初赛试题 ............... 4 第十六届全国青少年信息学奥林匹克联赛初赛试题 ............. 14 第十五届全国青少年信息学奥林匹克联赛初赛试题 ............. 25 第十四届全

国青少年信息学奥林匹克联赛初赛试题 ............. 35 第十三届全国青少年信息学奥林匹克联赛初赛试题 ............. 43 第十二届全国青少年信息学奥林匹克联赛初赛试题 ............. 52 第十一届全国青少年信息学奥林匹克联赛初赛试题 ............. 62 第十届全国青少年信息学奥林匹克联赛初赛试题 ................. 70 第九届全国青少年信息学奥林匹克联赛初赛试题 ................. 78 第八届全国青少年信息学奥林匹克联赛初赛试题 ................. 86 第七届全国青少年信息学奥林匹克联赛初赛试题 ................. 93 第六届全国青少年信息学奥林匹克联赛初赛试题 ............... 101 第五届全国青少年信息学奥林匹克联赛初赛试题 ............... 107 CCF NOIP 提高组(Pascal)参考答案与评分标准 .............114

第十七届全国青少年信息学奥林匹克联赛初赛试题
( 普及组 Pascal 语言 两小时完成 )
●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●● 一、单项选择题(共 20 题,每题 1.5 分,共计 30 分。每题有且仅有一个正确选项。 ) 1、在二进制下,1101001 + ( A、1011 B、1101 ) = 1110110。 C、1010 D、1111

2、字符“0”的 ASCII 码为 48,则字符“9”的 ASCII 码为( A、39 B、57 C、120

) 。

D、视具体的计算机而定 )张大小为 2MB 的数码照片。 C、4000 D、16000

3、一片容量为 8GB 的 SD 卡能存储大约( A、1600 B、2000

4、摩尔定律(Moore's law)是由英特尔创始人之一戈登·摩尔(Gordon Moore)提出 来的。根据摩尔定律,在过去几十年以及在可预测的未来几年,单块集成电路的集成度大约 每( A、1 )个月翻一番。 B、6 C、18 D、36

5、 无向完全图是图中每对顶点之间都恰有一条边的简单图。 已知无向完全图 G 有 7 个顶点, 则它共有( A、7 6、寄存器是( A、硬盘 )条边。 B、21 )的重要组成部分。 B、高速缓存 C、内存 D、中央处理器(CPU) C、42 D、49

7、如果根结点的深度记为 1,则一棵恰有 2011 个叶结点的二叉树的深度最少是( A、10 B、11 C、12 D、13

) 。

8、体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同 学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。 这种站队的方法类似于( A、快速排序 A、7 )算法。 C、冒泡排序 C、25
CCF NOIP2011 初赛 普及组 Pascal 4

B、插入排序 B、13

D、归并排序 )位。 D、不能确定

9、一个正整数在二进制下有 100 位,则它在十六进制下有(

10、有人认为,在个人电脑送修前,将文件放入回收站中就是已经将其删除了。这种想法是 ( ) 。 A、正确的,将文件放入回收站意味着彻底删除、无法恢复 B、不正确的,只有将回收站清空后,才意味着彻底删除、无法恢复 C、不正确的,即使将回收站清空,文件只是被标记为删除,仍可能通过恢复软件找回 D、不正确的,只要在硬盘上出现过的文件,永远不可能被彻底删除 11、广度优先搜索时,需要用到的数据结构是( A、链表 B、队列 C、栈 ) 。 D、散列表

12、在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指( A、程序运行时理论上所占的内存空间 B、程序运行时理论上所占的数组空间 C、程序运行时理论上所占的硬盘空间 D、程序源文件理论上所占的硬盘空间

) 。

13、在含有 n 个元素的双向链表中查询是否存在关键字为 k 的元素,最坏情况下运行的时 间复杂度是( A、O(1) ) 。 B、O(log n) C、O(n) D、O(n log n)

14、生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术。目前,指纹识别、 虹膜识别、人脸识别等技术已广泛应用于政府、银行、安全防卫等领域。以下不属于生物特 征识别技术及其应用的是( ) 。

A、指静脉验证

B、步态验证

C、ATM 机密码验证 D、声音验证

15、 现有一段文言文, 要通过二进制哈夫曼编码进行压缩。 简单起见, 假设这段文言文只由 4 个汉字“之”、 “乎”、 “者”、 “也”组成, 它们出现的次数分别为 700、 600、 300、 200。 那么,“也”字的编码长度是( A、1 B、2 ) 。 C 、3 ) 。 D、4

16、关于汇编语言,下列说法错误的是( A、是一种与具体硬件相关的程序设计语言

B、在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试
CCF NOIP2011 初赛 普及组 Pascal 5

C、可以直接访问寄存器、内存单元、以及 I/O 端口 D、随着高级语言的诞生,如今已完全被淘汰,不再使用 17、 ( )是一种选优搜索法,按选优条件向前搜索,以达到目标。当探索到某一步时,发

现原先选择并不优或达不到目标,就退回一步重新选择。 A、回溯法 18、1956 年( B、枚举法 C、动态规划 D、贪心法

)授予肖克利(William Shockley) 、巴丁(John Bardeen)和布拉

顿(Walter Brattain) ,以表彰他们对半导体的研究和晶体管效应的发现。 A、诺贝尔物理学奖 B、约翰·冯·诺依曼奖 C、图灵奖 D、高德纳奖(Donald E. Knuth Prize) 19、对一个有向图而言,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连 通的。例如,右图就是一个强连通图。事实上,在删掉边( A、a B、b C、c D、d )后,它依然是强连通的。

20、从 ENIAC 到当前最先进的计算机,冯·诺依曼体系结构始终 占有重要的地位。冯·诺依曼体系结构的核心内容是( A、采用开关电路 C、采用存储程序和程序控制原理 ) 。

B、采用半导体器件 D、采用键盘输入

二、问题求解(共 2 题,每题 5 分,共计 10 分) 1、每份考卷都有一个 8 位二进制序列号。当且仅当一个序列号含有偶数个 1 时,它才是有 效的。例如,00000000、01010011 都是有效的序列号,而 11111110 不是。那么,有效 的序列号共有________个。

2、定义字符串的基本操作为:删除一个字符、插入一个字符和将一个字符修改成另一个字符 这三种操作。将字符串 A 变成字符串 B 的最少操作步数,称为字符串 A 到字符串 B 的编 辑距离。字符串"ABCDEFG"到字符串"BADECG"的编辑距离为________。 三、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1、 Var

CCF NOIP2011 初赛 普及组 Pascal 6

n, m, i, ans : Integer; Begin Readln(n, m); ans := 0; i := n; While i <= m Do Begin ans := ans + i; Inc(i); End; Writeln(ans); End. 输入:10 20 输出:__________________ 2、 Var map, tel : String; i : Integer; Begin map := '22233344455566677778889999'; Readln(tel); For i := 1 To Length(tel) Do If (tel[i] >= '0') AND (tel[i] <= '9') Then Write(tel[i]) Else If (tel[i] >= 'A') AND (tel[i] <= 'Z') Then Write(map[Ord(tel[i]) - Ord('A') + 1]); End. 输入:CCF-NOIP-2011 输出:__________________ 3、 Const SIZE = 100; Var n, i, sum, x : Integer;

CCF NOIP2011 初赛 普及组 Pascal 7

a : Array[1..SIZE] Of Integer; Begin Readln(n); FillChar(a, SizeOf(a), 0); For i := 1 To n Do Begin Read(x); Inc(a[x]); End; i := 0; sum := 0; While sum < (n DIV 2 + 1) Do Begin Inc(i); sum := sum + a[i]; End; Writeln(i); End. 输入: 11 4 5 6 6 4 3 3 2 3 2 1 输出:__________________

CCF NOIP2011 初赛 普及组 Pascal 8

4、 Var n, m : Integer; Function solve(n, m : Integer) : Integer; Var i, sum : Integer; Begin If m = 1 Then Begin solve := 1; Exit; End; sum := 0; For i := 1 To n - 1 Do sum := sum + solve(i, m - 1); solve := sum; End; Begin Readln(n, m); Writeln(solve(n, m)); End. 输入:7 4 输出:__________________ 四、完善程序(前 11 空,每空 2 分,后 2 空,每空 3 分,共计 28 分) 1、 (子矩阵)输入一个 n1*m1 的矩阵 a,和 n2*m2 的矩阵 b,问 a 中是否存在子矩阵和 b 相等。若存在,输出所有子矩阵左上角的坐标;若不存在输出“There is no answer” 。 Const SIZE = 50; Var n1, m1, n2, m2, i, j, k1, k2 : Integer; a, b : Array[1..SIZE, 1..SIZE] Of Integer; good, haveAns : Boolean; Begin Readln(n1, m1); For i := 1 To n1 Do For j := 1 To m1 Do Read(a[i][j]); Readln(n2, m2);
CCF NOIP2011 初赛 普及组 Pascal 9

For i := 1 To n2 Do For j := 1 To m2 Do ① ;

haveAns := FALSE; For i := 1 To n1 - n2 + 1 Do For j := 1 To Begin ② Do

③ ; For k1 := 1 To n2 Do For k2 := 1 To ④ Do If a[i + k1 - 1][j + k2 - 1] <> b[k1][k2] Then good := FALSE; If good Then Begin Writeln(i, ' ', j); ⑤ ; End; End; If NOT haveAns Then Writeln('There is no answer'); End. 2、 (大整数开方)输入一个正整数 n(1≤n<10100) ,试用二分法计算它的平方根的整数部 分。 Const SIZE = 200; Type hugeint = Record len : Integer; num : Array[1..SIZE] Of Integer; End; //len 表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推 Var s : String; i : Integer; target, left, middle, right : hugeint; Function times(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的乘积 Var

CCF NOIP2011 初赛 普及组 Pascal 10

i, j : Integer; ans : hugeint; Begin FillChar(ans, SizeOf(ans), 0); For i := 1 To a.len Do For j := 1 To b.len Do ① := ans.num[i + j - 1] + a.num[i] * b.num[j]; For i := 1 To a.len + b.len Do Begin ans.num[i + 1] := ans.num[i + 1] + ans.num[i] DIV 10; ② ; If ans.num[a.len + b.len] > 0 Then ans.len := a.len + b.len Else ans.len := a.len + b.len - 1; End; times := ans; End; Function add(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的和 Var i : Integer; ans : hugeint; Begin FillChar(ans.num, SizeOf(ans.num), 0); If a.len > b.len Then ans.len := a.len Else ans.len := b.len; For i := 1 To ans.len Do Begin ans.num[i] := ③ ; ans.num[i + 1] := ans.num[i + 1] + ans.num[i] DIV 10; ans.num[i] := ans.num[i] MOD 10; End; If ans.num[ans.len + 1] > 0 Then Inc(ans.len); add := ans; End; Function average(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的平均数的整数部分 Var i : Integer; ans : hugeint; Begin ans := add(a, b);
CCF NOIP2011 初赛 普及组 Pascal 11

For i := ans.len DownTo 2 Do Begin ans.num[i - 1] := ans.num[i - 1] + ( ans.num[i] := ans.num[i] DIV 2; End; ans.num[1] := ans.num[1] DIV 2; If ans.num[ans.len] = 0 Then Dec(ans.len); average := ans; End; Function plustwo(a : hugeint) : hugeint; // 计算大整数 a 加 2 后的结果 Var i : Integer; ans : hugeint; Begin ans := a; ans.num[1] := ans.num[1] + 2; i := 1; While (i <= ans.len) AND (ans.num[i] >= 10) Do Begin ans.num[i + 1] := ans.num[i + 1] + ans.num[i] DIV 10; ans.num[i] := ans.num[i] MOD 10; Inc(i); End; If ans.num[ans.len + 1] > 0 Then ⑤ ; plustwo := ans; End; Function over(a, b : hugeint) : Boolean; // 若大整数 a > b 则返回 1, 否则返回 0 Var i : Integer; Begin If ( ⑥ ) Then Begin over := FALSE; Exit; End; If a.len > b.len Then Begin over := TRUE; Exit; End;
CCF NOIP2011 初赛 普及组 Pascal 12



) * 10;

For i := a.len DownTo 1 Do Begin If a.num[i] < b.num[i] Then Begin over := FALSE; Exit; End; If a.num[i] > b.num[i] Then Begin over := TRUE; Exit; End; End; over := FALSE; End; Begin Readln(s); FillChar(target.num, SizeOf(target.num), 0); target.len := Length(s); For i := 1 To target.len Do target.num[i] := Ord(s[target.len - i + 1]) FillChar(left.num, SizeOf(left.num), 0); left.len := 1; left.num[1] := 1; right := target; Repeat middle := average(left, right); If over( ⑧ ) Then right := middle Else left := middle; Until over(plustwo(left), right); For i := left.len DownTo 1 Do Write(left.num[i]); Writeln; End. ⑦ ;

CCF NOIP2011 初赛 普及组 Pascal 13

江苏省新海高级中学

第十六届全国青少年信息学奥林匹克联赛初赛试题
( 提高组 Pascal 语言 二小时完成 )

●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●
一、单项选择题 1.与 16 进制数 A1.2 等值的 10 进制数是 ( )A.101.2 B.111.4 C.161.125 D.177.25 2.一个字节(byte)由( )个二进制组成。 A.8 B.16 C.32 D.以上都有可能 )。

3.以下逻辑表达式的值恒为真的是( A.P∨(┓P∧Q)∨(┓P∧┓Q)

B.Q∨(┓P∧Q)∨(P∧┓Q)

C.P∨Q∨(P∧┓Q)∨(┓P∧Q) D.P∨┓Q∨(P∧┓Q)∨(┓P∧┓Q) 4.Linux 下可执行文件的默认扩展名是( )。 A. exe B. com C. dll D.以上都不是

5.如果在某个进制下等式 7*7=41 成立,那么在该进制下等式 12*12=( )也成立。 A. 100 B. 144 C. 164 D. 196 6.提出“存储程序”的计算机工作原理的是( )。 A. 克劳德?香农 B.戈登?摩尔 C.查尔斯?巴比奇 D.冯?诺依曼 7.前缀表达式“+ 3 * 2 + 5 12 ” 的值是( )。A. 23 B. 25 C. 37 D. 65

8.主存储器的存取速度比中央处理器(CPU)的工作速度慢的多,从而使得后者的效率受到影响。而 根据局部性原理,CPU 所访问的存储单元通常都趋于一个较小的连续区域中。于是,为了提高系 统整体的执行效率,在 CPU 中引入了( )。A.寄存器 B.高速缓存 C.闪存 D.外存

9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺 序结构的数组中。假定根结点存放在数组的 1 号位置上,则第 k 号结点的父结点如果存在的话, 应当存放在数组中的( )号位置。 A. 2k B. 2k+1 C. k/2 下取整 D. (k+1)/2

10.以下竞赛活动中历史最悠久的是( 二、不定项选择题

)。A. NOIP B.NOI C. IOI D. APIO

1.元素 R1、R2、R3、R4、R5 入栈的顺序为 R1、R2、R3、R4、R5。如果第 1 个出栈的是 R3,那么 第 5 个出栈的可能是( A.R1 )。 B.R2 C.R4 D.R5

14

江苏省新海高级中学

2. Pascal 语言,C 语言和 C++语言都属于( 编译性语言

)。A.高级语言

B.自然语言

C.解释性语言

D.

3. 原地排序是指在排序过程中(除了存储待排序元素以外的)辅助空间的大小与数据规模无关的 排序算法。以下属于原地排序的有( 序 D.选择排序 )。 )。A.冒泡排序 B.插入排序 C.基数排

4. 在整数的补码表示法中,以下说法正确的是( 对值相同

A.只有负整数的编码最高位为 1 B.在编码的位数确定后,所能表示的最小整数和最大整数的绝 C.整数 0 只有一个唯一的编码 D.两个用补码表示的数相加时,若在最高位产生进位,则表示运 算溢出 5. 一颗二叉树的前序遍历序列是 ABCDEFG,后序遍历序列是 CBFEGDA,则根结点的左子树的结点 个数可能是( )。 A.0 B. 2 C. 4 )。 D. 6

6. 在下列 HTML 语句中,可以正确产生一个指向 NOI 官方网站的超链接的是( A.<a url=”h t t p : / / w w w . n o i . c n”>欢迎访问 NOI 网站</a> B.<a href=”h t t p : / / w w w . n o i . c n”>欢迎访问 NOI 网站</a> C.<a>h t t p : / / w w w . n o i . c n</a> D.<a name”h t t p : / / w w w . n o i . c n”>欢迎访问 NOI 网站</a> 7. 关于拓扑排序,下列说法正确的是( A.所有连通的有向图都可以实现拓扑排序 B.对同一个图而言,拓扑排序的结构是唯一的 C.拓扑排序中入度为 0 的结点总会排在入度大于 0 的结点的前面 D.拓扑排序结果序列中的第一个结点一定是入度大于 0 的点 )。

8. 一个平面的法线是指与该平面垂直的直线。过点(1,1,1)、(0,3,0)、(2,0,0)的平面的法线 是( )。 A.过点(1,1,1)、(2,3,3)的直线 B.过点(1,1,1)、(3,2,1)的直线 C.过点(0,3,0)、(-3,1,1)的直线 D.过点(2,0,0)、(5,2,1)的直线 9.双向链表中有两个指针域 llink 和 rlink,分别指向该结点的前驱及后继。设 p 指向链表中的 一个结点,他的左右结点均为非空。现要求删除结点 p,则下列语句序列中正确的是( A.p->rlink->llink=p->rlink; p->llink->rlink=p->llink; delete p; B.p->llink->rlink=p->rlink; p->rlink->llink = p->llink; delete p; C.p->rlink->llink = p->llink; p->rlink->llink ->rlink = p->rlink; delete p; D.p->llink->rlink = p->rlink; p->llink->rlink->link = p->llink; delete p; )。

15

江苏省新海高级中学

10. 今年(2010 年)发生的事件有(

)。

A.惠普实验室研究员 Vinay Deolalikar 自称证明了 P≠NP B.英特尔公司收购计算机安全软件公司迈克菲(McAfee) C.苹果公司发布 iPhone 4 手机 D.微软公司发布 Windows 7 操作系统 三、问题求解 1.LZW 编码是一种自适应词典编码。在编码的过程中,开始时只有一部基础构造元素的编码词典, 如果在编码的过程中遇到一个新的词条,则该词条及一个新的编码会被追加到词典中,并用于后 继信息的编码。 举例说明,考虑一个待编码的信息串:“xyx yy yy xyx”。初始词典只有 3 个条目, 第一个为 x,编码为 1;第二个为 y,编码为 2;第三个为空格,编码为 3;于是串“xyx”的编码 为 1-2-1(其中-为编码分隔符),加上后面的一个空格就是 1-2-1-3。但由于有了一个空格,我 们就知道前面的“xyx”是一个单词,而由于该单词没有在词典中,我们就可以自适应的把这个词 条添加到词典里,编码为 4,然后按照新的词典对后继信息进行编码,以此类推。于是,最后得 到编码:1-2-1-3-2-2-3-5-3-4。 我们可以看到,信息被压缩了。压缩好的信息传递到接受方,接收方也只要根据基础词 典就可以完成对该序列的完全恢复。解码过程是编码过程的逆操作。现在已知初始词典的 3 个条 目如上述,接收端收到的编码信息为 2-2-1-2-3-1-1-3-4-3-1-2-1-3-5-3-6,则解码后的信息串 是”____________”。 2.无向图 G 有 7 个顶点,若不存在由奇数条边构成的简单回路,则它至多有__________条边。 3.记 T 为一队列,初始时为空,现有 n 个总和不超过 32 的正整数依次入列。如果无论这些数具体 为何值,都能找到一种出队的方式,使得存在某个时刻队列 T 中的数之和恰好为 9,那么 n 的最 小值是___________。 四、阅读程序写结果

1. const size = 10; var i, j, cnt, n, m : integer; data : array[1..size] of integer; begin readln(n, m); for i := 1 to n do read(data[i]); for i := 1 to n do begin cnt := 0; for j := 1 to n do if (data[i] < data[j]) or ((data[j] = data[i]) and (j < i)) then inc(cnt);

16

江苏省新海高级中学

if cnt = m then writeln(data[i]); end; end. 输入 5 2 96 -8 0 16 87 输出:__________ 2. const size = 100; var na, nb, i, j, k : integer; a, b : array[1..size] of integer; begin readln(na); for i := 1 to na do read(a[i]); readln(nb); for i := 1 to nb do read(b[i]); i := 1; j := 1; while (i <= na) and (j <= nb) do begin if a[i] <= b[j] then begin write(a[i],' '); inc(i); end else begin write(b[j], ' '); inc(j); end; end; if i <= na then for k := i to na do write(a[k], ' '); if j <= nb then for k := j to nb do write(b[k], ' '); end. 输入

17

江苏省新海高级中学

5 1 3 5 7 9 4 2 6 10 14 输出:__________ 3. const num = 5; var n: integer; function r(n : integer) : integer; var i : integer; begin if n <= num then begin r := n; exit; end; for i :=1 to num do if r(n-i) < 0 then begin r:=i; exit; end; r:=-1; end; begin readln(n); writeln(r(n)); end. 输入 16 输出:__________ 4. const size=100; var n,m,x,y,i :integer; r: array[1.. size] of integer; map : array[1..size, 1..size] of boolean; found : boolean; function successful : boolean;

18

江苏省新海高级中学

var i : integer; begin for i :=1 to n do if not map[r[i]][r[i mod n + 1]] then begin successful := false; exit; end; successful :=true; end; procedure swap(var a, b : integer); var t : integer; begin t := a; a := b; b := t; end; procedure perm(left, right : integer); var i : integer; begin if found then exit; if left > right then begin if successful then begin for i := 1 to n do writeln(r[i], ' '); found := true; end; exit; end; for i:= left to right do begin swap(r[left], r[i]); perm(left + 1, right); swap(r[left], r[i]); end; end; begin readln(n, m);

19

江苏省新海高级中学

fillchar(map, sizeof(map), false); for i := 1 to m do begin readln(x, y); map[x][y] := true; map[y][x] := true; end; for i := 1 to n do r[i] := i; found := false; perm(1, n); if not found then writeln('No soloution'); end. 输入: 9 12 1 2 2 3 3 4 4 5 5 6 6 1 1 7 2 7 3 8 4 8 5 9 6 9 输出:__________ 五、完善程序
1.(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸 手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两 个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人 一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入 N(2<=N<1000)和这 N 个人单独过桥需要的时间,请计算总共最少需要多少时间,他们才能全部到达河左岸. 例如,有 3 个人甲、乙、丙,他们单独过桥的时间分别为 1 为 7.具体方法是:甲 的左岸,总时间为 2+1+4=7. 2 4,则总共最少需要的时间 乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲,丙在一起过桥到河

const SIZE = 100; INFINITY = 10000; LEFT = true; RIGHT = false; LEFT_TO_RIGHT = true;

20

江苏省新海高级中学

RIGHT_TO_LEFT = false; var n, i : integer; time : array[1..Size] of integer; pos :array[1..Size] of Boolean; function max(a, b :integer) : integer; begin if a > b then max := a else max := b; end; function go(stage : boolean) : integer; var i, j, num, tmp, ans : integer; begin if (stage = RIGHT_TO_LEFT) then begin num := 0; ans :=0; for i := 1 to n do if pos[i] = Rignt then begin inc(num); if time[i] > ans then ans := time[i]; end; if __________ then begin go := ans; exit; end; ans := INFINITY; for i := 1 to n – 1 do if pos[i] = RIGHT then for j := i+1 to n do if pos[j] = RIGHT then begin pos[i] := LEFT; pos[j] := LEFT; tmp := max(time[i], time[j]) + _______; if tmp < ans then ans := tmp; pos[i] := RIGHT;

21

江苏省新海高级中学

pos[j] := RIGHT; end; go := ans; end else if (stage = LEFT_TO_RIGHT) then begin ans := INFINITY; for i := 1 to n do if _______ then begin pos[i] := RIGHT; tmp := ________; if tmp < ans then ans := tmp; _________; end; go := ans; end else go := 0; end; begin readln(n); for i := 1 to n do begin read(time[i]); pos[i] := RIGHT; end; writeln(go(RIGHT_TO_LEFT)); end. 2.(烽火传递)烽火台又称烽燧,是重要的军事防御设施,一般建在险要处或交通要道上。 一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息;夜晚燃烧干柴,以火光传递军情。在 某两座城市之间有 n 个烽火台,每个烽火台发出信号都有一定的代价。为了使情报准确地 传递,在连续 m 个烽火台中至少要有一个发出信号。现输入 n、m 和每个烽火台发出信号的 代价,请计算总共最少花费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确 传递。 例如,有 5 个烽火台,它们发出信号的代价依次为 1、2、5、6、2,且 m 为 3,则总 共最少花费的代价为 4,即由第 2 个和第 5 个烽火台发出信号。 const SIZE= 100; var n. m, r, i : integer; value, heap, pos, home, opt : array[l..SIZEl of integer; //heap [i]表示用顺序数组存储的堆 heap 中第 i 个元素的值
22

江苏省新海高级中学

//pos [i]表示 opt [i]在堆 heap 中的位置,即 heap lpos [i]] =opt [i] //home [i]表示 heap [i]在序列 opt 中的位置,即 opt [home [i]] =heap [i] procedure swap (i, j : integer)j //交换堆中的第 i 个和第 j 个元素 var tmp : integer; begin pos [home [i]] :=j; pos [home[j]] :=i; tmp :=heap [i]; heap [i] :=heap [j]; heap [j] :=tmp; tmp :=home [i]; home [i] :=home[j]; home [j] := tmp; end; procedure add (k : integer) ; //在堆中插入 opt[k] var i : integer; begin inc (r) ; heap [r] := ① pos [k] := r; ② while (i > 1) and (heap[i] < heap[i div _2]) do begin swap (i, i div 2); i := i div 2; end; end; procedure remove (k : integer) ; //在堆中删除 opt[k] var i, j : integer; begin i := pos [k] ; swap (i, r) ; dec (r) ; if i = r + 1 then
23

江苏省新海高级中学

exit; while (i > 1) and (heap [i] < heap[i div 2]) do begin swap (i, i div 2); i := i div 2; end; while i + i <= r do begin if (i + i + 1 <= r) and (heap[i + i + 1] < heap[i + i]) then j:=i+i+l else ③ if heap [i] > heap [j] then begin ④ i: = j end else break; end; end; begin readln (n, m) ; for i := 1 to n do read (value [i] ) ; r := 0; for i := 1 to m do begin opt [il := value [i] ; add (i) ; end; for i := m + 1 to n do begin opt[i] := ⑤ remove ( ⑥ ) add (i) ; end; writeln (heap [1] ) ; end.

24

江苏省新海高级中学

第十五届全国青少年信息学奥林匹克联赛初赛试题
( 提高组 Pascal 语言 二小时完成 )

●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

一. 单项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案。 ) 1、关于图灵机下面的说法哪个是正确的: A) 图灵机是世界上最早的电子计算机。 B) C) 由于大量使用磁带操作,图灵机运行速度很慢。 图灵机只是一个理论上的计算模型。

D) 图灵机是英国人图灵发明的,在二战中为破译德军的密码发挥了重要作用。 2、关于 BIOS 下面的说法哪个是正确的: A) BIOS 是计算机基本输入输出系统软件的简称。 B) C) BIOS 里包含了键盘、鼠标、声卡、图形界面显器等常用输入输出设备的驱动程序。 BIOS 一般由操作系统厂商来开发完成。

D) BIOS 能提供各种文件拷贝、复制、删除以及目录维护等文件管理功能。 3、已知大写字母A的ASCII编码为65(十进制) ,则大写字母J的 十六进制 ASCII编码为: A) 48 B) 49 C) 50 D) 以上都不是

4、在字长为 16 位的系统环境下,一个 16 位带符号整数的二进制补码为 1111111111101101。其对应的十进制 整数应该是: A) 19 B) -19 C) 18 D) -18

5、一个包含 n 个分支结点(非叶结点)的非空满 k 叉树,k>=1,它的叶结点数目为: A) nk + 1 B) nk-1 C) (k+1)n-1 D. (k-1)n+1

6. 表达式 a*(b+c)-d 的后缀表达式是: A) abcd*+B) abc+*dC) abc*+dD) -+*abcd

7、最优前缀编码,也称 Huffman 编码。这种编码组合的特点是对于较频繁使用的元素给与较短的唯一编码, 以提高通讯的效率。下面编码组合哪一组不是合法的前缀编码。

25

江苏省新海高级中学 A)(00,01,10,11) B)(0,1,00,11) C)(0,10,110,111) D)(1,01,000,001) 8、快速排序平均情况和最坏情况下的算法时间复杂度分别为: A) 平均情况 O(nlog2n),最坏情况 O(n2) B) 平均情况 O(n), C) 平均情况 O(n), 最坏情况 O(n2) 最坏情况 O(nlog2n)

D) 平均情况 O(log2n), 最坏情况 O(n2) 9 、左图给出了一个加权无向图,从顶点 V0 开始用 prim 算法求最小生成树。则依 次加入最小生成树的顶点集合的顶点序列 为: A) B) C) D) V0, V1, V2, V3, V5, V4 V0, V1, V5, V4, V3, V3 V1, V2, V3, V0, V5, V4 V1, V2, V3, V0, V4, V5

10、全国信息学奥林匹克的官方网站为参与信息学竞赛的老师同学们提供相关的信息和资源,请问全国信息 学奥林匹克官方网站的网址是: A) http://www.noi.com/ B) http://www.noi.org/ C) http://www.noi.cn/ D) http://www.xinxixue.com/ 二. 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数不少于 1。多选或少选均不 得分) 。 1、关于 CPU 下面哪些说法是正确的: A)CPU 全称为中央处理器(或中央处理单元) 。 B) CPU 能直接运行机器语言。 C) CPU 最早是由 Intel 公司发明的。 D)同样主频下,32 位的 CPU 比 16 位的 CPU 运行速度快一倍。 2、关于计算机内存下面的说法哪些是正确的: A)随机存储器(RAM)的意思是当程序运行时,每次具体分配给程序的内存位置是随机而不确定的。 B) 一般的个人计算机在同一时刻只能存/取一个特定的内存单元。 C) 计算机内存严格说来包括主存(memory) 、高速缓存(cache)和寄存器(register)三个部分。 D)1MB 内存通常是指 1024*1024 字节大小的内存。 26

江苏省新海高级中学 3、关于操作系统下面说法哪些是正确的: A. B. C. D. 多任务操作系统专用于多核心或多个 CPU 架构的计算机系统的管理。 在操作系统的管理下,一个完整的程序在运行过程中可以被部分存放在内存中。 分时系统让多个用户可以共享一台主机的运算能力, 为保证每个用户都得到及时的响应通常会采用 时间片轮转调度的策略。 为了方便上层应用程序的开发,操作系统都是免费开源的。

4、关于计算机网络,下面的说法哪些是正确的: A) B) C) D) 网络协议之所以有很多层主要是由于新技术需要兼容过去老的实现方案。 新一代互联网使用的 IPv6 标准是 IPv5 标准的升级与补充。 TCP/IP 是互联网的基础协议簇,包含有 TCP 和 IP 等网络与传输层的通讯协议。 互联网上每一台入网主机通常都需要使用一个唯一的 IP 地址,否则就必须注册一个固定的域名来 标明其地址。 5、关于 HTML 下面哪些说法是正确的: A) B) C) D) HTML 全称超文本标记语言,实现了文本、图形、声音乃至视频信息的统一编码。 HTML 不单包含有网页内容信息的描述,同时也包含对网页格式信息的定义。 网页上的超链接只能指向外部的网络资源,本网站网页间的联系通过设置标签来实现。 点击网页上的超链接从本质上就是按照该链接所隐含的统一资源定位符 (URL) 请求网络资源或网 络服务。 6、若 3 个顶点的无权图 G 的邻接矩阵用数组存储为{{0,1,1},{1,0,1},{0,1,0}},假定在具体存储 中顶点依次为: v1,v2,v3 关于该图,下面的说法哪些是正确的: A)该图是有向图。 B) 该图是强连通的。 C) 该图所有顶点的入度之和减所有顶点的出度之和等于 1。 D)从 v1 开始的深度优先遍历所经过的顶点序列与广度优先的顶点序列是相同的。 7、在带尾指针(链表指针 clist 指向尾结点)的非空循环单链表中每个结点都以 next 字段的指针指向下一个 节点。假定其中已经有 2 个以上的结点。下面哪些说法是正确的: A) 如果 p 指向一个待插入的新结点,在头部插入一个元素的语句序列为: p^.next:= clist^.next; clist^.next:= p; B) 如果 p 指向一个待插入的新结点,在尾部插入一个元素的语句序列为: p^.next:= clist; clist^.next:= p; C) 在头部删除一个结点的语句序列为: p:= clist^.next; clist^.next:= clist^.next^.next; dispose(p); D) 在尾部删除一个结点的语句序列为。 p:= clist; clist:= clist ^.next; dispose(p); 8、散列表的地址区间为 0-10,散列函数为 H(K)=K mod 11。采用开地址法的线性探查法处理冲突,并将关键 27

江苏省新海高级中学 字序列 26,25,72,38,8,18,59 存储到散列表中,这些元素存入散列表的顺序并不确定。假定之前 散列表为空,则元素 59 存放在散列表中的可能地址有: A) 5 B) 7 C) 9 D) 10

9、排序算法是稳定的意思是关键码相同的记录排序前后相对位置不发生改变,下列哪些排序算法是稳定的: A) 插入排序 B) 基数排序 C) 归并排序 D) 冒泡排序

10、在参加 NOI 系列竞赛过程中,下面哪些行为是被严格禁止的: A) B) C) D) 携带书写工具,手表和不具有通讯功能的电子词典进入赛场。 在联机测试中通过手工计算出可能的答案并在程序里直接输出答案来获取分数。 通过互联网搜索取得解题思路。 在提交的程序中启动多个进程以提高程序的执行效率。

三.问题求解(共 2 题,每空 5 分,共计 10 分)

1.拓扑排序是指将有向无环图 G 中的所有顶点排成一个线性序列,使得图中任意一对顶点 u 和 v,若 <u,v> ∈E(G),则 u 在线性序列中出现在 v 之前,这样的线性序列成为拓扑序列。如下的有向无环图,对 其顶点做拓扑排序,则所有可能的拓扑序列的个数为 。

2

5 6

8

1

4 7 9

3

2.某个国家的钱币面值有 1, 7, 72, 73 共计四种,如果要用现金付清 10015 元的货物,假设买卖双方各种 钱币的数量无限且允许找零,那么交易过程中至少需要流通 张钱币。

四.阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. var a, b: integer;

function work(a, b: integer): integer; begin

28

江苏省新海高级中学

if a mod b <> 0 then work := work(b, a mod b) else work := b; end;

begin read(a, b); writeln(work(a, b)); end. 输入:123 321 输出:_________

2. var a, b: array[0..3] of integer; i, j, tmp: integer; begin for i := 0 to 3 do read(b[i]); for i := 0 to 3 do begin a[i] := 0; for j := 0 to i do begin inc(a[i], b[j]); inc(b[a[i] mod 4], a[j]); end; end; tmp := 1; for i := 0 to 3 do begin a[i] := a[i] mod 10;

29

江苏省新海高级中学

b[i] := b[i] mod 10; tmp := tmp * (a[i] + b[i]); end; writeln(tmp); end. 输入:2 3 5 7 输出:_______________ 3. const y = 2009; maxn = 50; var n, i, j, s: longint; c: array[0..maxn, 0..maxn] of longint; begin s := 0; read(n); c[0, 0] := 1; for i := 1 to n do begin c[i, 0] := 1; for j := 1 to i - 1 do c[i, j] := c[i-1, j-1] + c[i-1, j]; c[i, i] := 1; end; for i := 0 to n do s := (s + c[n, i]) mod y; write(s); end.

输入:17 输出: 4. var

30

江苏省新海高级中学 n, m, i, j, k, p: integer; a, b: array[0..100] of integer; begin read(n, m); a[0] := n; i := 0; p := 0; k := 0; repeat for j := 0 to i - 1 do if a[i] = a[j] then begin p := 1; k := j; break; end; if p <> 0 then break; b[i] := a[i] div m; a[i+1] := (a[i] mod m) * 10; inc(i); until a[i] = 0; write(b[0], '.'); for j := 1 to k - 1 do write(b[j]); if p <> 0 then write('('); for j := k to i - 1 do write(b[j]); if p <> 0 then write(')'); writeln; end.

输入:5 13 输出:_________

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

31

江苏省新海高级中学 1. (最大连续子段和)给出一个数列(元素个数不多于 100) ,数列元素均为负整数、正整数、0。请 找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子 数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为 4,-5,3,2, 4 时,输出 9 和 3;数列为 1 2 3 -5 0 7 8 时,输出 16 和 7。 var a: array[1..100] of integer; n, i, ans, len, tmp, beg: integer; begin read(n); for i := 1 to n do read(a[i]); tmp := 0; ans := 0; len := 0; beg := begin if tmp + a[i] > ans then begin ans := tmp + a[i]; len := i - beg; end else if ( len := i - beg; if tmp + a[i] begin beg := tmp := 0; end else ⑤ end; writeln(ans, ' ', len); end. ; ④ ; ③ then ② ) and (i - beg > len) then ① ; for i := 1 to n do

2. (寻找等差数列) 有一些长度相等的等差数列(数列中每个数都为 0~59 的整数) ,设长度均为 L, 将等差数列中的所有数打乱顺序放在一起。现在给你这些打乱后的数,问原先,L 最大可能为多大?先读入

32

江苏省新海高级中学

一个数 n(1<=n<=60) ,再读入 n 个数,代表打乱后的数。输出等差数列最大可能长度 L。

var hash: array[0..60] of integer; n, x, ans, maxnum, i: integer; function work(now: integer): boolean; var ok: boolean; first, second, delta, i: integer; begin while (( inc(now); if now > maxnum then begin work := true; exit; end; first := now; for second := first to maxnum do if hash[second] > 0 then begin delta := break; if delta = 0 then ok := ( else begin ok := true; for i := 0 to ans - 1 do ok := end; if ok then begin for i := 0 to ans - 1 do dec(hash[first+delta*i]); if work(first) then begin ⑤ and (hash[first+delta*i]>0); ④ ) ② ; ③ > maxnum then ① ) and (hash[now]=0)) do

if first + delta *

33

江苏省新海高级中学 work := true; exit; end; for i := 0 to ans - 1 do inc(hash[first+delta*i]); end; end; work := false; end; begin fillchar(hash, sizeof(hash), 0); read(n); maxnum := 0; for i := 1 to n do begin read(x); inc(hash[x]); if x > maxnum then maxnum := x; end; for ans := n downto 1 do if (n mod ans = 0) and begin writeln(ans); break; end; end. ⑥ then

34

江苏省新海高级中学

第十四届全国青少年信息学奥林匹克联赛初赛试题
( 提高组 Pascal 语言 二小时完成 ) ●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●
一、单项选择题(共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案)。

1.在以下各项中,( A.Solaris B.Linux

)不是操作系统软件。 C.Sybase D.Windows Vista E.Symbian

2.微型计算机中,控制器的基本功能是( A.控制机器的各个部件协调工作 D.获取外部信息

)。

B.实现算数运算与逻辑运算 C.存储各种控制信息 E.存放程序和数据

3.设字符串 S=“Olympic”,S 的非空子串的数目是( A.29 B.28 C.16

)。 D.17 E.7

4.完全二叉树有 2*N-1 的结点,则它的叶子结点数目是( A.N-1 B.2*N C.N

)。 D.2 -1
N

E.N/2

5.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最 少要交换( A.4 )次。 B.5 C.6 D.7 E.8

6.设栈 S 的初始状态为空,元素 a,b,c,d,e,f 依次入栈,出栈顺序为 b,d,c,f,e,a 那么栈容量至 少应该是( A.6 )。 B.5 C.4 D.3 E.2

7.与十进制数 28.5625 相等的四进制数是( A.123.21 B.131.22

) D.130.21 E.130.20

C.130.22

8.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为( A.队列 B.多维数组 C.线性表 D.链表

)的数据结构。 E.栈

35

江苏省新海高级中学

9.TCP/IP 是一组构成互联网基础的网络协议,字面上包括两组协议:传输控制协议(TCP)和网际互联协 议(IP)。TCP/IP 协议把 Internet 网络系统描述成具有 4 个层次功能的网络模型,其中提供源节点和目的节 点之间的信息传输服务,包括寻址和路由器选择等功能的是( A.链路层 B.网络层 C.传输层 )。 D.应用层 E.会话层

10.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,等概率情况下,查找成功的平均查找长度 (平均比较次数)是( A.35/11 B.34/11 )。 C.33/11 D.32/11 E.34/10

二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于或等于 1。多选或少选均 不得分)。 11.下列关于图灵的说法正确的有( )。

A.图灵奖是美国计算机协会与 1966 年设立的,专门鼓励那些对计算机做出重要贡献的个人 B.图灵奖有“计算机界诺贝尔奖”之称。 C.迄今为止,还没有华裔计算机科学家获此殊荣。 D.图灵奖的名称取自计算机科学先驱、英国科学家阿兰·图灵。

12.计算机在工作过程中,若突然停电,( A.硬盘 B.CPU C.ROM

)中不会丢失信息不会丢失。 D.RAM

13.若 A=True,B=False,C=True,D=False,以下逻辑运算表达式真的有( A.(A∧B)V(C∧DV?A) C.(BVCVD)VD∧A B.((?A∧B)VC)∧?B D.A∧(DV?C)∧B

)。

14.Web2.0 是近年来互联网热门概念之一,其核心是互动与分享。下列网站中,( 0 的应用。 A.Sina B.Flickr C.Yahoo D.Google

)是典型的 Web2.

15.(2008)10+ A.(833)16

(5B)16 的结果是()。 B.(2099)10 C.(4063)8 D.(100001100011)2

16.二叉树 T,已知其先序遍历是 1 2 4 3 5 7 6(数字为节点编号,以下同),后序遍历是 4 2 7 5 6 3 1,则该二叉树的中根遍历是( )

36

江苏省新海高级中学

A.4 2 1 7 5 3 6

B.2 4 1 7 5 3 6

C.4 2 1 7 5 6 3

D.2 4 1 5 7 3 6

17.面向对象的程序设计(Object-Oriented Programming)是一种程序设计的方法论,它将对象作为程序设 计的基本单元,将数据和程序封装在对象中,以提高软件的重用性、灵活性、和扩展性。下面关于面向对象 的程序设计说法中正确的是( )。

A.面向对象的程序设计方法通常采用自顶向下的设计方法进行设计。 B.面向对象的程序设计方法具有继承性(inheritance)、封装性(encapsulation)、多态性(polymorphism) 等几大特点。 C.支持面向对象特性称为面向对象的编程语言,目前较为流行的有 C++,JAVA,C#等。 D.面向对象的程序设计的雏形来自于 Simula 语言,后来在 SmallTalk 语言的完善和标准化的过程中得到更 多的扩展和对以前的思想的重新注解。至今,SmallTalk 语言仍然被视为面向对象的基础。

18.设 T 是一棵有 n 个定点的树,以下说法正确的是( A.T 是联通的,无环的 C.T 是无环的,有 n-1 条边

)。

B.T 是联通的,有 n-1 条边 D.以上都不对

19.NOIP 竞赛推荐使用的语言环境有( A.Dev-C++ B.Visual C++

)。 C.Free Pascal D.Lazarus

20.在下列防火墙(Firewall)的说法中,正确的有(

)。

A.防火墙是一项协助确保信息安全的设备,其会依照特定的规则,允许或是限制数据通过 B.防火墙可能是一台专属硬件或是安装在一般硬件上的一套软件 C.网络层防火墙可以视为一种 IP 数据包过滤器,只允许符合特定规定的数据包通过,其余的一概禁止穿越 防火墙 D.应用层防火墙是在 TCP/IP 的“应用层”上工作,可以拦截进出某应用程序的所有数据包

三、问题求解(共 2 题,每题 5 分,共计 10 分) 1.有 6 个城市,任何两个城市之间有一条道路连接,6 个城市之间两两之间的距离如下表表示,则城市 1 到城市 6 的最短距离为____________。 城市 1 城市 1 城市 2 城市 3 城市 4 0 2 3 1 城市 2 2 0 2 5 城市 3 3 2 0 3 城市 4 1 5 3 0 城市 5 12 3 6 7 城市 6 15 12 5 9

37

江苏省新海高级中学

城市 5 城市 6

12 15

3 12

6 5

7 9

0 2

2 0

2.书架上有 21 本书,编号从 1 到 21 从中选 4 本,其中每两本的编号都不相邻的选法一共有_________ __________种。

四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分)。 1.var i,a,b,c,d:integer; f:array[0..3] of integer; begin for i:=0 to 3 do read(f[i]); a:=f[0]+f[1]+f[2]+f[3]; a:=a div f[0]; b:=f[0]+f[2]+f[3]; b:=b div a; c:=(b*f[1]+a) div f[2]; d:=f[(b div c) mod 4]; if (f[(a+b+c+d) mod 4]>f[2]) then begin a:=a+b; writeln(a) end else begin c:=c+d; writeln(c); end; end. 输入: 9 19 29 39

输出:_______________________________

2.var a,b,c:integer;

38

江苏省新海高级中学

Procedure begin

foo(a,b,c:integer);

if a>b then else end; begin readln(a,b,c); foo(a,b,c); end. 输入:2 1 3

foo(c,a,b)

writeln(a,',',b,',',c)

输出:_________________

3.procedure f(a,b,c:integer); begin write(a,b,c,'/'); if (a=3)and(b=2)and(c=1) then if (b<c) then else if a<b then if a<c then f(c,a,b) else f(b,c,a); end; var a,b,c:integer; begin readln(a,b,c); f(a,b,c); end. 输入:1 3 2 输出:____________________ f(a,c,b) exit;

4.var

s:string; i,j,len,k:integer;

begin readln(s); len:=length(s);

39

江苏省新海高级中学

for i:=1 to len do if (ord(s[i])>=ord('A')) and (ord(s[i])<=ord('Z')) then for i:=1 to len do if (ord(s[i])<ord('X')) then else s:=chr(ord(s[i])-23); write(s); write('/'); for j:=1 to 3 do begin i:=1; while i<=len-j do begin s[i]:=s[i+j]; i:=i+j; end; end; writeln(s); end. 输入:ABCDEFGuvwxyz 输出:________________________________ s:=chr(ord(s[i])+3) s:=chr(ord(s[i])-ord('A')+ord('a'));

五.完善程序(前 6 空,每空 3 分,后 5 空,每空 2 分,共 28 分)。 1.(找第 k 大的数)给定一个长度为 1000000 的无序正整数序列,以及另一个数 n(1<=n<=1000000),接 下来以类似快速排序的方法找到序列中第 n 大的数(关于第 n 大的数:例如序列{1,2,3,4,5,6}中第 3 大的数是 4) Var a:array[1..1000000] of integer; n,m,ans:integer; procedure swap(var a,b:integer); var t:integer; begin if (a<>b) then begin t:=a; a:=b; b:=t; end; end;

40

江苏省新海高级中学

Function FindKth(left,right,n:integer):integer; Var tmp,value,i,j:integer; begin if left=right then exit(left); tmp:=random(right-left)+left; swap(a[tmp],a[left]); value:=____①_____ i:=left; j:=right;

while i<j do begin while (i<j) and (________②______) do dec(j); if i<j then begin a[i]:=a[j];inc(i); end else break; while (i<j) and (___③___) do inc(i); if i<j then begin a[j]:=a[i]; dec(j); end else break; end; ____④_____ if i<n then begin inc(i); exit(FindKth(_____⑤_____));end; if i>n then begin dec(j); exit(______⑥________);end; exit(i); end;

var i:integer; begin randomize; ans:=-1; m:=5; for i:=1 to m do read(a[i]); read(n); ans:=FindKth(1,m,n);

41

江苏省新海高级中学

writeln(a[ans]); end.

2. (矩阵中的数字)有一个 n*n(1≤n≤5000)的矩阵 a,对于 1≤i<n, 1≤j≤n, a[i,j]<a[i+1,j] a[j,i]<a[j,i+1]。 即矩阵中左右相邻的两个元素,右边的元素一定比左边的大。上下相邻的两个元素,下面的元素一定比上面 的大。给定矩阵 a 中的一个数字 k,找出 k 所在的行列(注意:输入数据保证矩阵中的数各不相同)。var n,k,answerx,answery:integer; a:array[1..5000,1..5000] of integer; Procedure FindKPosition; Var I,j:integer; Begin i:=n; j:=n; while j>0 do begin if a[n,j]<k then break; dec(j); end; ______①_________ while a[i,j]<>k do begin while (___②_____) and (i>1) do dec(i); while (___③_____) and (j<=n) do inc(j); end; _______④________ _______⑤________ end; var i,j:integer; begin read(n); for i:=1 to n do for j:=1 to n do read(a[i,j]); read(k); FindKPosition; writeln(answerx,' ',answery);

42

江苏省新海高级中学

end.

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

一、 单项选择题 (共 10 题, 每题 1.5 分, 共计 15 分。 每题有且仅有一个正确答案.) 。 1. 在以下各项中。 ( )不是 CPU 的组成部分。 A. 控制器 B. 运算器 C. 寄存器 D. 主板 E. 算术逻辑单元(ALU) 2. 在关系数据库中, 存放在数据库中的数据的逻辑结构以( A. 二叉树 B. 多叉树 C. 哈希表 二维表 3.在下列各项中,只有( A. Byte UB E. TB )为主。 D. B+树

E.

)不是计算机存储容量的常用单位。 B. KB C. MB

D.

4.ASCII 码的含义是( ) 。 A. 二—十进制转换码 的二进制数码 D. 计算机可处理字符的唯一编码 5.在 Pascal 语言中,表达式 A. 18 1 C.23

B. 美国信息交换标准代码 E. 常用字符的二进制编码 (23 or 2 xor 5)的值是( D.32 E.24 )

C. 数字

B.

6.在 Pascal 语言中,判断整数 a 等于 0 或 b 等于 0 或 c 等于 0 的正确的条件表达式是 ( ) A. not ((a<>0) or (b<>0) or (c<>0)) B. not ((a<>0) and (b<>0) and (c<>0)) C. not ((a=0) and (b=0)) or (c=0) D.(a=0) and (b=0) and (c=0) E. not ((a=0) or (b=0) or (c=0))
43

江苏省新海高级中学

7. 地面上有标号为 A、B、C 的 3 根细柱, 在 A 柱上放有 10 个直径相同中间有孔的圆盘, 从 上到下次依次编号为 1, 2, 3, ??,将 A 柱上的部分盘子经过 B 柱移入 C 柱, 也可以在 B 柱上暂存。如果 B 柱上的操作记录为: “进,进,出,进,进,出,出,进,进,出,进,出, 出” 。那么, 在 C 柱上, 从下到上的盘子的编号为( ) 。 A. 2 4 3 6 5 7 B. 2 4 1 2 5 7 C. 2 4 3 1 7 6 D. 2 4 3 6 7 5 E. 2 1 4 3 7 5 8. 与十进制数 17.5625 相对应的 8 进制数是( ) 。 A. 21.5625 B. 21.44 21.73 D. 21.731 E. 前 4 个答案都不对

C.

9. 欧拉图 G 是指可以构成一个闭回路的图, 且图 G 的每一条边恰好在这个闭回路上出现一次 (即一笔画成) 。在以下各个描述中, 不一定是欧拉图的是: ( ) 。 A. 图 G 中没有度为奇数的顶点 B. 包括欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径) C. 包括欧拉闭迹的图(欧拉迹是指通过途中每边恰好一次的路径) D. 存在一条回路, 通过每个顶点恰好一次 E. 本身为闭迹的图 10. 一个无法靠自身的控制终止的循环称为“死循环” ,例如在 C 语言程序中,语句 “while(1)printf("*"); ”就是一个死循环,运行它将无休止地打印*号。下面关于死循环的 说法中, 只有( )是正确的。 A. 不存在一种算法 , 对任何一个程序及相应的输入数据 , 都可以判断是否会出现死循环 , 因而, 任何编译系统都不做死循环检查 B. 有些编译系统可以检测出死循环 C. 死循环属于语法错误, 既然编译系统能检查各种语法错误, 当然也能检查出死循环 D. 死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死循环也是可以 检测的 E. 对于死循环,只能等到发生时做现场处理, 没有什么更积极的手段 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于 或等于 1。多选或少选均不得分) 。 11. 设 A=B=true,C=D=false,以下逻辑运算表达式值为真的有( ) 。 A. ( ﹁A ∧ B)∨ (C∧ D∨ A) B. ﹁ ( ( (A ∧B) ∨C) ∧D) C. A∧(B∨C∨D)∨D D. (A∧(D ∨C)) ∧B
44

江苏省新海高级中学

12. 命题“P→Q”可读做 P 蕴含 Q, 其中 P、Q 是两个独立的命题. 只有当命题 P 成立而命 题 Q 不成立时, 命题"P→Q"的值为 false, 其它情况均为 true. 与命题"P→Q"等价的逻辑 关系式是( ) 。 A. ﹁ P∨Q B. P∧Q C. ﹁ (P∨Q) D. ﹁(﹁Q∧P ) 13. (2070)16+(34)8 的结果是( A. (8332)10 C. (100000000110)2 ) 。 B. (208C)16 D. (20214)8

14. 已知 7 个节点的二叉树的先根遍历是 1 2 4 5 6 3 7(数字为结点的编号,以下同), 后 根遍历是 4 6 5 2 7 3 1, 则该二叉树的可能的中根遍历是( ) A. 4 2 6 5 1 7 3 B. 4 2 5 6 1 3 7 C. 4 2 3 1 5 4 7 D. 4 2 5 6 1 7 3 15. 冗余数据是指可以由其他数据导出的数据,例如,数据库中已存放了学生的数学、语文、 和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看做冗余数据。冗余数据往 往会造成数据的不一致,例如上面 4 个数据如果都是输入的,由于操作错误使总分不等于三 科成绩之和,就会产生矛盾。下面关于冗余数据的说法中, 正确的是( ) 。 A. 应该在数据库中消除一切冗余数据 B. 与用高级语言编写的数据处理系统相比, 用关系数据库编写的系统更容易消除冗余数据 C. 为了提高查询效率, 在数据库中可以适当保留一些冗余数据, 但更新时要做相容性检验 D. 做相容性检验会降低效率, 可以不理睬数据库中的冗余数据 16.在下列各软件中,属于 NOIP 竞赛(复赛)推荐使用的语言环境有( A. gcc B. g++ C. Turbo C D. free pascal 17. 以下断电之后将仍能保存数据的有( A. 硬盘 B. ROM 存 D. RAM ) 。 C. 显 ) 。

18. 在下列关于计算机语言的说法中,正确的有( ) 。 A. 高级语言比汇编语言更高级, 是因为它的程序的运行效率更高 B. 随着 Pascal、C 等高级语言的出现, 机器语言和汇编语言已经退出了历史舞台 C. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 D. C 是一种面向过程的高级计算机语言 19. 在下列关于算法复杂性的说法中, 正确的有( ) 。
45

江苏省新海高级中学

A. 算法的时间复杂度,是指它在某台计算机上具体实现时的运行时间 B. 算法的时间复杂度,是指对于该算法的一种或几种主要的运算, 运算的次数与问题的规 模之间的函数关系 C. 一个问题如果是 NPC 类的, 就意味着在解决该问题时, 不存在一个具有多项式时间复杂 度的算法. 但这一点还没有得到理论上证实,也没有被否定 D. 一个问题如果是 NP 类的,与 C 有相同的结论 20. 近 20 年来, 许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的强有力 的工具. 在下列关于递归的说法中, 正确的是( ) 。 A. 在 1977 年前后形成标准的计算机高级语言"FORTRAN77"禁止在程序使用递归, 原因之一 是该方法可能会占用更多的内存空间. B. 和非递归算法相比, 解决同一个问题, 递归算法一般运行得更快一些 C. 对于较复杂的问题, 用递归方式编程往往比非递归方式更容易一些 D. 对于已定义好的标准数学函数 sin(x), 应用程序中的语句“y=sin(sin(x));”就是一种 递归调用 三.问题求解(共 2 题,每题 5 分,共计 10 分) 1.给定 n 个有标号的球,标号依次为 1,2,?,n。将这 n 个球放入 r 个相同的盒子里,不 允许有空盒,其不同放置方法的总数记为 S(n,r)。例如,S(4,2)=7,这 7 种不同的放置方法 依次为{(1) , (234)} , {(2) , (134)} , {(3) , (124)} , {(4) , (123)} , {(12) , (34)} , {(13) , (24)} , {(14) , (23)}。当 n=7,r=4 时,S(7,4)= 。 2.N 个人在操场里围成一圈,将这 N 个人按顺时针方向从 1 到 N 编号,然后从第一个人起, 每隔一个人让下一个人离开操场,显然,第一轮过后,具有偶数编号的人都离开了操场。依 次做下去,直到操场只剩下一个人,记这个人的编号为 J(N),例如,J(5)=3,J(10)=5,等 等。 m m 则 J(400)= 。 (提示:对 N=2 +r 进行分析,其中 0≤r<2 ) 。 四.阅读程序写结果(共 4 题,每题 8 分,共计 1. program s401; var p,q:array[0..5] of integer; i,x,y:integer; begin y:=20; for i:=0 to 4 do read(p[i]); readln; q[0]:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7; q[1]:=p[0]+p[1] div ((p[2]+p[3]) div p[4]); q[2]:=p[0]*p[1] div p[2]; q[3]:=q[0]*q[1]; 32 分)

46

江苏省新海高级中学

q[4]:=q[1]+q[2]+q[3]; x:=(q[0]+q[4]+2)-p[(q[3]+3) mod 4]; if (x>10) then y:=y+(q[1]*100-q[3]) div (p[p[4] mod 3]*5) else y:=y+20+(q[2]*100-q[3]) div (p[p[4] mod 3]*5); writeln(x,',',y); end. /*注:本例中,给定的输入数据可以避免分母为 0 或下标越界。*/ 输入:6 6 5 5 3 输出: 2. program s402; var a,b:integer; x,y:^integer; procedure fun(a,b:integer); var k:integer; begin k:=a; a:=b; b:=k; end; begin a:=3; b:=6; x:=@a; y:=@b; fun(x^,y^); write('No.1:',a,',',b,' '); fun(a,b); writeln('No.2:',a,',',b); end. 输出: 3. program S403; var a1:array[1..50] of integer; var i,j,t,t2,n,n2:integer; begin n:=50; for i:=1 to n do a1[i]:=0; n2:=round(sqrt(n)); for i:=2 to n2 do if(a1[i]=0) then begin
47

江苏省新海高级中学

t2:=n div i; for j:=2 to t2 do a1[i*j]:=1; end; t:=0; for i:=2 to n do if (a1[i]=0) then begin write(i:4); inc(t); if(t mod 10=0) then writeln; end; writeln; end. 输出:

4. program S404; const n=12; ch2:array[0..12] of char =('q','A','S','O','R','T','E','X','A','M','P','L','E'); var k:integer; ch:array[0..12] of char; procedure shift(k,n:integer); var v:char; j:integer; begin v:=ch[k]; j:=k+k; while (j<=n) do begin if (j<n) and (ord(ch[j])<ord(ch[j+1])) then inc(j); if (ord(v)<ord(ch[j])) then begin ch[j div 2]:=ch[j]; j:=j*2; end else exit; ch[j div 2]:=v; end; end; procedure hpsrt; var k:integer; tmp:char; begin
48

江苏省新海高级中学

for k:=n div 2 downto 1 do shift(k,n); write('No.1: '); for k:=1 to n do write(ch[k]); writeln; for k:=n downto 1 do begin tmp:=ch[1]; ch[1]:=ch[k]; ch[k]:=tmp; shift(1,k-1); end; end; begin for k:=0 to n do ch[k]:=ch2[k]; hpsrt; write('No.2: '); for k:=1 to n do write(ch[k]); writeln; end. 输出:

五.完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) 1.(格雷码 Gray Code) Gray Code 是一种二进制编码,编码顺序与相应的十进制数的大小不一致。其特点是,对于 两个相邻的十进制数,对应的两个格雷码只有一个二进制位不同。另外,最大数与最小数间 也仅有一个二进制位不同,以 4 位二进制数为例,编码如下:

十进制数 0 1 2 3 4 5 6 7

格雷码 0000 0001 0011 0010 0110 0111 0101 0100

十进制数 8 9 10 11 12 13 14 15

格雷码 1100 1101 1111 1110 1010 1011 1001 1000

如果把每个二进制的位看做一个开关,则将一个数变为相邻的另一个数,只须改动一个开关。 因此,格雷码广泛用于信号处理、数-模转换等领域。 n 下面程序的任务是:由键盘输入二进制的位数 n(n<16),再输入一个十进制数 m(0≤m<2 ), 然后输出对应于 m 的格雷码(共 n 位,用数组 gr[ ]存放) program s501; var bound,m,n,i,j,b,p:integer;
49

江苏省新海高级中学

gr:array[0..14]of integer; begin bound:=1; writeln('input n,m'); readln(n,m); for i:=1 to n do bound:=[ ① ]; if (m<0)or(m>=bound) then begin writeln('Data error!'); [ ② ]; end; b:=1; for i:=1 to n do begin p:=0; b:=b*2; for[ ③ ] to m do if ([ ④ ] ) then p:=1-p; gr[i]:=p; end; for i:=n[ ⑤ ] do write(gr[i]); writeln; end. 2. (连续邮资问题)某国发行了 n 种不同面值的邮票,并规定每封信上最多允许贴 m 张邮票。 在这些约束下, 为了能贴出{1, 2, 3, ?, maxvalue}连续整数集合的所有邮资, 并使 maxvalue 的值最大,应该如何设计各邮票的面值?例如,当 n=5 和 m=4 时,面值设计为(1,3,11,15, 32) ,可使 maxvalue 达到最大值 70(或者说,用这些面值的 1 至 4 张邮票可以表示不超过 70 的所有邮资,但无法表示邮资 71) 。而用其他面值的 1 至 4 张邮票如果可以表示不超过 k 的 所有邮资,必有 k≤70) 下面是用递归回溯求解连续邮资问题的程序。数组 x[1:n]表示 n 种不同的邮票面值, 并约定各元素按下标是严格递增的。数组 bestx[1:n]存放使 maxvalue 达到最大值的邮票面 值(最优解) ,数组 y[maxl]用于记录当前已选定的邮票面值 x[1:i]能贴出的各种邮资所需 的最少邮票张数。请将程序补充完整。 program S502; const NN=20; maxint=30000; maxl=500; var bestx,x:array [0..NN] of integer;
50

江苏省新海高级中学

y:array [0..maxl] of integer; j,n,m,maxvalue:integer; procedure result; var j:integer; begin writeln('max=',maxvalue); for j:=1 to n do write(bestx[j]:4); writeln; end; procedure backtrace(i,r:integer); var j,k:integer; z: array[0..maxl] of integer; begin for j:=0 to[ ① ]do if (y[j]<m) then for k:=1 to m-y[j] do if (y[j]+k<=y[ ② ]) then y[ ③ ]:=y[j]+k; while (y[r]<maxint) do inc(r); if (i>n) then begin if (r-1>maxvalue) then begin maxvalue:=[ ④ ] ; for j:=1 to n do bestx[j]:=x[j]; end; exit; end; for k:=0 to maxl do z[k]:=y[k]; for j:=[ ⑤ ] to r do begin x[i]:=j; [ ⑥ ]; for k:=0 to maxl do y[k]:=z[k]; end; end; begin maxvalue:=0; writeln('input n,m:'); readln(n,m);
51

江苏省新海高级中学

for j:=1 to maxl do y[j]:=maxint; y[0]:=0; x[0]:=0; x[1]:=1; backtrace(2,1); result; end.

第十二届全国青少年信息学奥林匹克联赛初赛试题
( 提高组 Pascal 语言 二小时完成 ) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、 单项选择题(共 答案.) 。 1. 在以下各项中。 ( A. 控 制 器 器 D. ALU 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确

)不是 CPU 的组成部分。 B. 运 算 器 E. RAM

C.





2. BIOS(基本输入输出系统)是一组固化在计算机内( 片上的程序。 A. 控 制 器 B. CPU C. 主 板 条 E. 硬盘

)上一个 ROM 芯 D. 内存

3.在下面各世界顶级的奖项中,为计算机科学与技术领域作出杰出贡献的科学家设立的奖项 是( ) 。 A. 沃 尔 夫 奖 B. 诺贝尔奖 C. 菲 尔 兹 奖 D. 图 灵 奖 E. 南丁格尔奖 4.在编程时(使用任一种高级语言,不一定是 Pascal),如果需要从磁盘文件中输入一个很 大的二维数组(例如 1000*1000 的 double 型数组) ,按行读(即外层循环是关于行的) 与按列读(即外层循环是关于列的)相比,在输入效率上( ) 。 A. 没有区别 B. 有一些区别,但机器处 理 速 度 很 快,可忽略不计 C. 按行读的方式要高一些 D. 按列读的方式要高一些 E.取决于数组的存储方 式。 5.在 Pascal 语言中,表达式(21 xor 2)的值是( A. 441 B. 42 C.23 ) D.24

E.25

52

江苏省新海高级中学

6.在 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)or(b<>0) E. (a<>0)and (b<>0) 7.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态 为空,从这一时刻开始的出入记录为:“进,出,进,进,进,出,出,进,进,进,出 , 出”。假设车辆入站的顺序为 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 E.1,4, 3,7,5 8 .高度为 n 的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度 为 n-1 的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为 0,如果某 个均衡的二叉树共有 2381 个结点, 则该树的树高为( ) 。 A. 10 B. 11 C. 12 D. 13 E. 10 2 –1 9. A. C. D. 与十进制数 1770.625 3352.5 3352.1161 3350.1151 对应的八进制数是( ) 。 B. 3350.5 E. 前 4 个答案都不对 )次比较,

10.将 5 个数的序列排序,不论原先的顺序如何,最少都可以通过( 完成从小到大的排序。 A. 6 B. 7 C. 8 D. 9 E. 10

二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于或等 于 1。多选或少选均不得分) 。 11. 设 A=B=D=true,C=E=false,以下逻辑运算表达式值为真的有( ) 。 A. (┐A∧B)∨(C∧D)∨┐E B.?┐(((A∧B)∨C)∧D∧E) C. A∧(B∨C∨D∨E) D. (A∧(B∨C))∧D∧E 12. (2010)16 + (32)8 的结果是( A. (8234)10 B. (202A)16 . (2042)16 ) 。 C. (100000000110)2 D

13. 设栈 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
53

江苏省新海高级中学

.d,c,e,b,a 14. 已知 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 3 1 5 4 6 D. 2 3 1 4 6 5 15. 在下列各数据库系统软件中,以关系型数据库为主体结构的是( A. ACCESS B. SQL Server C. Oracle . Foxpro 16.在下列各软件中, 属于 NOIP 竞赛 (复赛) 推荐使用的语言环境有 ( A. gcc/g++ B. Turbo Pascal C. Turbo C ee pascal 17. 以下断电之后将不能保存数据的有( A. 硬盘 B. ROM 18. A. B. C. D. ) 。 C. 显存 D. RAM ) 。 D

) 。 D. fr

在下列关于计算机语言的说法中,正确的有( ) 。 Pascal 和 C 都是编译执行的高级语言 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 C++是历史上的第一个支持面向对象的计算机语言 高级语言比汇编语言更高级,是因为它的程序的运行效率更高

19. 在下列关于计算机算法的说法中,正确的有( ) 。 A. 一个正确的算法至少要有一个输入 B. 算法的改进,在很大程度上推动了计算机科学与技术的进步 C. 判断一个算法的好坏,主要依据它在某台计算机上具体实现时的运行时间 D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效 算法 20. 在下列关于青少年信息学竞赛的说法中,你赞成的是( ) (本题不回答为 0 分,答题一律满分) 。 A.举行信息学竞赛的目的,是为了带动广大青少年学科学、爱科学,为造就一大批优秀的计 算机科学与技术人才奠定良好的基础 B. 如果竞赛优胜者不能直接保送上大学,我今后就不再参与这项活动了 C. 准备竞赛无非要靠题海战术,为了取得好成绩,就得拼时间、拼体力 D. 为了取得好成绩,不光要看智力因素,还要看非智力因素。优秀选手应该有坚韧不拔的 意志,有严谨求实的作风,既要努力奋进,又要胜不骄败不馁

54

江苏省新海高级中学

三.问题求解(共 2 题,每题 5 分,共计 10 分) 1.将 2006 个人分成若干不相交的子集,每个子集至少有 3 个人,并且: (1)在每个子集中,没有人认识该子集的所有人。 (2)同一子集的任何 3 个人中,至少有 2 个人互不认识。 (3)对同一子集中任何 2 个不相识的人,在该子集中恰好只有 1 个人认识这两个人。 则 满 足 上 述 条 件 的 子 集 最 多 能 有 个? 2.将边长为 n 的正三角形每边 n 等分,过每个分点分别做另外两边的平行线,得到若干个 正三角形,我们称为小三角形。正三角形的一条通路是一条连续的折线,起点是最上面的一 个小三角形,终点是最 下面一行位于中间的小三角形。在通路中,只允许由一个小三角形走 到另一个与其有公共边的且位于同一行或下一行的小三角形,并且每个小三角形不能经过两 次或两次以上(图中是 n=5 时一条通路的例 子) 。设 n=10,则该正三角形的不同的通路 的总数为_ __。

四.阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. Program ex401; var u,v:array[0..3] of integer; i,x,y:integer; begin x:=10; y:=10; for i:=0 to 3 do read(u[i]); v[0]:=(u[0]+u[1]+u[2]+u[3]) div 7; v[1]:=u[0] div ((u[1]-u[2]) div u[3]); v[2]:=u[0]*u[1] div u[2]*u[3]; v[3]:=v[0]*v[1]; x:=(v[0]+v[1]+2)-u[(v[3]+3) mod 4];

55

江苏省新海高级中学

if (x>10) then y:=y+(v[2]*100-v[3]) div (u[u[0] mod 3]*5)由 OIFans.cn 收集 else y:=y+20+(v[2]*100-v[3]) div (u[v[0] mod 3]*5); writeln (x,',',y); end. {*注:本例中,给定的输入数据可以避免分母为 0 或下标越界。} 输入:9 3 9 4 输出: 2.Program ex402; 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 ex403; Const NN=7; Type Arr1=array[0..30] of char; Var s:arr1; k,p:integer; function fun1(s:arr1; a:char;n:integer):integer; var j:integer; begin j:=n; while (a<s[j])and(j>0) do dec(j);
56

江苏省新海高级中学

fun1:=j; end; Function fun2(s:arr1; a:char; n:integer):integer; var j:integer; begin j:=1; while (a>s[j])and(j<n) do inc(j); fun2:=j; end; begin for k:=1 to NN do s[k]:=chr(ord('A')+2*k+1); k:=fun1(s,'M',NN)+fun2(s,'M',NN); writeln(k); end. 输出: 4. program ex404; var x,x2:longint;由 OIFans.cn 收集 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);
57

江苏省新海高级中学

writeln; end. 输入:9734526 输出: 五.完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) 1. ( 选 排 列 ) 下 面 程 序 的 功 能 是 利 用 递 归 方 法 生 成 从 1 到 n(n<10) 的 n 个 数 中 取 k(1<=k<=n)个数的 全部可能的排列(不一定按升序输出) 。例如,当 n=3,k=2 时,应该输 出(每行输出 5 个排列) : 12 13 21 23 32 31 程序: Program ex501; Var i,n,k:integer; a:array[1..10] of integer; count:longint; Procedure perm2(j:integer); var i,p,t:integer; begin if ① then begin for i:=k to n do begin inc(count); t:=a[k]; a[k]:=a[i]; a[i]:=t; for ② do write(a[p]:1); write(' '); t:=a[k];a[k]:=a[i];a[i]:=t; if (count mod 5=0) then writeln; end; exit; end; for i:=j to n do begin t:=a[j];a[j]:=a[i];a[i]:=t;由 OIFans.cn 收集 ③ ; t:=a[j]; ④ ; end end; begin writeln('Entry n,k (k<=n):'); read(n,k);
58

江苏省新海高级中学

count:=0; for i:=1 to n do a[i]:=i; ⑤ ; end. 2. (TSP 问题的交叉算子)TSP 问题(Traveling Salesman Problem)描述如下:给定 n 个 城 市,构成一个完全图,任何两城市之间都有一个代价(例如路程、旅费等) ,现要构造遍 历所有城市的环 路,每个城市恰好经过一次,求使总代价达到最小的一条环路。 遗传算法是求解该问题的一个很有效的近似算法。在该算法中,一个个体为一条环路, 其编码方法 之一是 1 到 n 这 n 个数字的一个排列,每个数字为一个城市的编号。例如当 n=5 时, “3 4 2 1 5” 表示该方案实施的路线为 3->4->2->1->5->3。遗传算法的核心是通过 两个个体的交叉操作,产生两 个新的个体。下面的程序给出了最简单的一种交叉算法。具 体过程如下: (1)选定中间一段作为互换段,该段的起止下标为 t1,t2,随机生成 t1,t2 后,互换两段。 (2)互换后,在每个新的排列中可能有重复数字,因而不能作为新个体的编码,一般再做 两步处理: (2.1) 将两个互换段中,共同的数字标记为 0,表示已处理完。 (2.2) 将两个互换段中其余数字标记为 1,按顺序将互换段外重复的数字进行替换。例 如:n=12,两个个体分别是: a1: 1 3 5 4 * 2 6 7 9 * 10 12 8 11 a2: 3 2 1 12 * 6 7 10 11 * 8 5 4 9 t1=5,t2=8。上述每一行中,两个星号间的部分为互换段。假定数组的下标从 1 开始, 互换后有: a1: 1 3 5 4 * 6 7 10 11 * 10 12 8 11 a2: 3 2 1 12 * 2 6 7 9 * 8 5 4 9 然后,将数字 6,7 对应的项标记为 0,星号内数字 2,9,10,11 对应的项标记为 1,并 且按顺序对 应关系为:10<->2, 11<->9。 于是, 将 a1[9]=10 替换为 a1[9]=2, 将 a2[2]=2 替 换为 a2[2]=10, 类似再做第 2 组替换。这样处理后,就得到了两个新个体: a1: 1 3 5 4 6 7 10 11 2 12 8 9 a2: 3 10 1 12 2 6 7 9 8 5 4 11 (3)输出两个新个体的编码。 程序: program ex502; type arr1=array[1..20] of integer; var a1,a2,kz1,kz2:arr1; n,k,t1,t2:integer; function rand1(k:integer):integer; var t:integer; begin
59

江苏省新海高级中学

t:=0; while (t<2) or(t>k) do t:=random(k+1)-2; rand1:=t; end; procedure read1(var a:arr1;m:integer); {读入数组元素 a[1]至 a[m],a[0]=0,略。} procedure wrt1(var a:arr1;m:integer); {输出数组元素 a[1]至 a[m],略。} procedure cross(var a1,a2:arr1;t1, t2,n:integer);由 OIFans.cn 收集 var i,j,t,kj:integer; begin for i:=t1 to t2 do begin t:=a1[i]; ① ; end; for i:=1 to n do if (i<t1)or(i>t2) then begin kz1[i]:=-1;kz2[i]:=-1; end else begin ② ; end; for i:=t1 to t2 do for j:=t1 to t2 do if(a1[i]=a2[j]) then begin ③ ; break; end; for i:=t1 to t2 do if(kz1[i]=1) then begin for j:=t1 to t2 do if(kz2[j]=1) then begin kj:=j; break; end; for j:=1 to n do if then begin a1[j]:=a2[kj];break; end; for j:=1 to n do ⑤ then
60



if

江苏省新海高级中学

begin a2[j]:=a1[i]; break; end; kz1[i]:=0;kz2[kj]:=0; end; end; begin writeln('input (n>5):'); readln(n); writeln('input array 1:'); read1(a1,n); writeln('input array 2:'); read1(a2,n); t1:=rand1(n-1); repeat t2:=rand1(n-1); until(t1<>t2); if(t1>t2) then begin k:=t1; t1:=t2; t2:=k; end; ⑥ ; wrt1(a1,n); wrt1(a2,n); end.

61

江苏省新海高级中学

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

一、单项选择题(共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案.) 。 1. 字符串“ababacbab”和字符串“abcba”的最长公共子串是( ) 。 A. Abcba B. cba C. abc D. ab E. bcba 2. 设全集 I = {a, b, c, d, e, f, g, h},集合 A∪B= {a, b, c, d, e, f}, A∩C = {c, d, e},? A ∩~B= {a, d},那么集合 A∩B∩C 为( ) 。 A. {c, e} B. {d, e} C. {e} D. {c, d, e} E. {d, f} 3. 以下二进制数的值与十进制数 23.456 的值最接近的是( ) 。 A. 10111.0101 B. 11011.1111 C. 11011.0111 D. 10111.0111 E. 10111.1111 4. 完全二叉树的结点个数为 4 * N + 3,则它的叶结点个数为( ) 。 A. 2 * N B. 2 * N - 1 C. 2 * N + 1 D. 2 * N – 2 E. 2 * N + 2 5. 平面上有五个点 A(5, 3), B(3, 5), C(2, 1), D(3, 3), E(5, 1)。以这五点作为完全图 G 的顶点,每两点之间的直线距离是图 G 中对应边的权值。图 G 的最小生成树中的所有边的 权值综合为( ) 。 A. 8 B. 7+ 5 C. 9 D. 6+ 5 E. 4+2 2 + 5

6. 下列设备中没有计算功能的是( ) 。 A. 笔记本电脑 B. 掌上电脑 C. 智能手机 D. 电子计算器 E. 液晶显示器 7. Intel 的首颗 64 位处理器是( ) 。 A. 8088 B. 8086 C. 80386 D. 80486

E. Pentium

8. 常见的邮件传输服务器使用( )协议发送邮件。 A. HTTP B. SMTP C. TCP D. FTP E. POP3 9. 不能在 Linux 上使用的网页浏览器是( ) 。 A. Internet Explore B. Netscape C. Opera

D. Firefox

E. Mozilla

10. 一位艺术史学家有 20000 幅 1024 * 768 的真彩色图像,如果将这些图像以位图形式保

62

江苏省新海高级中学

存在 CD 光盘上(一张 CD 光盘的容量按 600M 计算) ,大约需要( )张 CD 光盘。 A. 1 B. 10 C. 100 D. 1000 E. 10000 二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分。多选或少选均不得分) 。 11. 设 A = true,B = false,C = false,D = true,以下逻辑运算表达式值为真的有( ) 。 A. (A∧B)∨(C∧D) B.((A∧B)∨C)∧D C. A∧((B∨C)∨D) D. (A∧(B∨C))∨D E. (A∨B)∧(C∨D) 12. (3725)8 + (B)16 的运算结果是( ) 。 A. (3736)8 B. (2016)10 C. (11111100000)2

D. (3006)10

E. (7E0)16

13. 二叉树 T 的宽度优先遍历序列为 A B C D E F G H I,已知 A 是 C 的父结点,D 是 G 的 父结点,F 是 I 的父结点,树中所有结点的最大深度为 3(根结点深度设为 0) ,可知 E 的父 结点可能是( ) 。 A. A B. B C. C D. D E. F 14. 设栈 现的有( A. a, b, D. d, c, S 的初始状态为空,元素 a, b, c, d, e, f, g 依次入栈,以下出栈序列不可能出 ) 。 c, e, d, f, g B. b, c, a, f, e, g, d C. a, e, c, b, d, f, g f, e, b, a, g E. g, e, f, d, c, b, a

15. 下列外设接口中可以通过无线连接的方式连接设备的是( ) 。 A. USB 2.0 高速版 B. 红外 C. 蓝牙 D. 串口 E. IEEE 802.11g 无线网卡 16. 处理器 A 每秒处理的指令数是处理器 B 的 2 倍。某一特定程序 P 分别编译为处理器 A 和处理器 B 的指令,编译结果处理器 A 的指令数是处理器 B 的 4 倍。已知程序 P 的算法时 2 间复杂度为 O(n ),如果处理器 A 执行程序 P 时能在一小时内完成的输入规模为 n,则处理器 B 执行程序 P 时能在一小时内完成的输入规模为( ) 。 A. 4 * n B. 2 * n C. n D. n/2 E. n/4 17. 以下哪个(些)不是计算机的输出设备( ) 。 A. 鼠标 B. 显示器 C. 键盘 D. 扫描仪 E. 绘图仪 18. 以下断电之后将不能保存数据的有( ) 。 A. 硬盘 B. 寄存器 C. 显存 D. 内存 E. 高速缓存 19. 下列活动中属于信息学奥赛系列活动的是( ) 。 A. NOIP B. NOI C. IOI D. 冬令营 E. 国家队选拔赛 20. 下列关于高级语言的说法正确的有( ) 。
63

江苏省新海高级中学

A. B. C. D. E.

Ada 是历史上的第一个高级语言 Pascal 和 C 都是编译执行的高级语言 C++是历史上的第一个支持面向对象的语言 编译器将高级语言程序转变为目标代码 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上

三.问题求解(请在空格处填上答案,每空 5 分,共计 10 分) 1. 将数组{32, 74, 25, 53, 28, 43, 86, 47}中的元素按从小到大的顺序排列,每次可以交 换任意两个元素,最少需要交换 次。 2. 取火柴游戏的规则如下:一堆火柴有 N 根,A、B 两人轮流取出。每人每次可以取 1 根或 2 根,最先没有火柴可取的人为败方,另一方为胜方。如果先取者有必胜策略则记为 1,先 取者没有必胜策略记为 0。当 N 分别为 100,200,300,400,500 时,先取者有无必胜策略 的标记顺序为 (回答应为一个由 0 和/或 1 组成的字符串) 。 四.阅读程序(共 4 题,每题 8 分,共计 32 分) 1. Var a, b, c, p, q : integer; r : array[0..2] of integer; begin read(a, b, c); p := a div b div c; q := b - c + a + p; r[0] := a * p div q * q; r[1] := r[0] * (r[0] - 300); if (3 * q - p mod 3 <= r[0]) and (r[2] = r[2]) then r[1] := r[r[0] div p mod 2] else r[1] := q mod p; writeln(r[0] - r[1]); end. 输入:100 7 3 输出: 2. Var a : array [1..50] of integer; n, i, sum : integer; procedure work(p, r: integer); var i, j, temp : integer; begin if p < r then begin i := p - 1;
64

江苏省新海高级中学

for j := p to r - 1 do if a[j] >= a[r] then begin inc(i); temp := a[i]; a[i] := a[j]; a[j] := temp; end; temp := a[i + 1]; a[i + 1] := a[r]; a[r] := temp; work(p, i); work(i + 2, r); end; end; begin read(n); for i := 1 to n do read(a[i]); work(1, n); for i := 1 to n - 1 do sum := sum + abs(a[i + 1] - a[i]); writeln(sum); end. 输入:10 23 435 12 345 3123 43 456 12 32 -100 输出: 3. Var str : string; len, i, j : integer; nchr : array [0..25] of integer; mmin : char; begin mmin := 'z'; readln(str); len := length(str); i := len; while i >= 2 do begin if str[i - 1] < str[i] then break; dec(i); end; if i = 1 then begin writeln('No result!'); exit; end;
65

江苏省新海高级中学

for j := 1 to i - 2 do write(str[j]); fillchar(nchr, sizeof(nchr), 0); for j := i to len do begin if (str[j] > str[i - 1]) and (str[j] < mmin) then mmin := str[j]; inc(nchr[ord(str[j]) - ord('a')]); end; dec(nchr[ord(mmin) - ord('a')]); inc(nchr[ord(str[i - 1]) - ord('a')]); write(mmin); for i := 0 to 25 do for j := 1 to nchr[i] do write(chr(i + ord('a'))); writeln; end. 输入:zzyzcccbbbaaa 输出: 4. var n : longint; function g(k : longint) : longint; begin if k <= 1 then g := k else g := (2002 * g(k - 1) + 2003 * g(k - 2)) mod 2005; end; begin read(n); writeln(g(n)); end. 输入:2005 输出: 五.完善程序(前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) 1.木材加工 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有 剩余) ,需要得到的小段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务是 计算能够得到的小段木头的最大长度。 木头长度的单位是 cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度 也是正整数。
66

江苏省新海高级中学

输入: 第一行是两个正整数 N 和 K(1 ≤ N ≤ 10000,1 ≤ K ≤ 10000),N 是原木的数目, K 是需要得到的小段的数目。 接下来的 N 行,每行有一个 1 到 10000 之间的正整数,表示一根原木的长度。 输出: 输出能够切割得到的小段的最大长度。如果连 1cm 长的小段都切不出来,输出”0”。 输入样例: 3 7 232 124 456 输出样例: 114 程序: var n, k : integer; len : array [1..10000] of integer; i, left, right, mid : integer; function isok(t : integer) : boolean; var num, i : integer; begin num := 0; for i := 1 to n do begin if num >= k then break; num := ① ; end; if ② then isok := true else isok := false; end; begin readln(n, k); right := 0; for i := 1 to n do begin readln(len[i]); if right < len[i] then right := len[i]; end; inc(right); ③ ; while ④ < right do
67

江苏省新海高级中学

begin mid := (left + right) div 2; if ⑤ then right := mid else left := mid; end; writeln(left); end. 2.N 叉树 题目描述: 我们都了解二叉树的先根遍历,中根遍历和后根遍历。当知道先根遍历的结果和中根遍 历结果的时候,我们可以唯一的确定二叉树;同样的,如果知道了后根遍历的结果和中根遍 历结果,二叉树也是唯一确定的。但是如果只知道先根遍历和后根遍历的结果,二叉树就不 是唯一的了。但是我们可以计算满足条件的不同二叉树一共有多少个。这不是一个很困难的 问题,稍微复杂一点,我们把这个问题推广到 N 叉树。 我们用小写英文字母来表示 N 叉树的结点,不同的结点用不同的字母表示。比如,对 于 4 叉树,如果先根遍历的结果是 abdefgc,后根遍历的结果是 defgbca,那么我们可以 得到 6 个不同的 4 叉树(如下图) 。

输入: 输入数据包括 3 行。 第一行是一个正整数 N(2 ≤ N ≤ 20),表示我们要考虑 N 叉树。 第二行和第三行分别是两个字符串序列,分别表示先根遍历和后根遍历的结果。 输出: 31 输出不同的 N 叉树的数目。题目中给的数据保证得到的结果小于 2 。 输入样例: 4 abdefgc defgbca 输出样例: 6
68

江苏省新海高级中学

程序: var str1, str2 : string; N, len : integer; com : array[0..100, 0..100] of longint; function getcom(x, y : integer) : longint; begin if (y = 0) or (x = y) then ① else if com[x][y] <> 0 then getcom := com[x][y] else begin com[x][y] := getcom(x - 1, y)+ ② ; getcom := com[x][y]; end; end; function count(a, b, c : integer) : longint; var sum : longint; k, s, t, p : integer; begin sum := 1; k := 0; s := a + 1; t := c; if a = b then count := 1 else begin while s <= b do begin p := t; while str1[s] <> str2[t] do inc(t); sum := sum * count(s, s + t - p, p); s := ③ ; ④ ; inc(k); end; count := ⑤ * getcom(N, k); end; end; begin readln(N); readln(str1); readln(str2); len := length(str1); writeln(count( ⑥ )); end.

69

江苏省新海高级中学

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

一、 单项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案.) 。 1. 设全集 I = {a, b, c, d, e, f, g},集合 A = {a, b, c},B = {b, d, e},C = {e, f, g},那么集合 。 ( A ? B) ? (~ C ? B) 为( ) A. {a, b, c, d} 2. B. {a, b, d, e} C. {b, d, e} D. {b, c, d, e} E. {d, f, g}

由 3 个 a,5 个 b 和 2 个 c 构成的所有字符串中,包含子串“abc”的共有( )个。 A. 40320 B. 39600 C. 840 D. 780 E. 60 某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状 态为空,从这一时刻开始的出入记录为: “进,出,进,进,出,进,进,进,出,出, 进,出” 。假设车辆入站的顺序为 1,2,3,??,则车辆出站的顺序为( ) 。 A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7 C. 1, 3, 5, 4, 6 D. 1, 3, 5, 6, 7 E. 1, 3, 6, 5, 7 满二叉树的叶结点个数为 N,则它的结点总数为( ) 。 N A. N B. 2 * N C. 2 * N – 1 D. 2 * N + 1 E. 2 – 1 二叉树 T,已知其前序遍历序列为 1 2 4 3 5 7 6,中序遍历序列为 4 2 1 5 7 3 6,则其后序 遍历序列为( ) 。 A. 4 2 5 7 6 3 1 B. 4 2 7 5 6 3 1 C. 4 2 7 5 3 6 1 D. 4 7 2 3 5 6 1 E. 4 5 2 6 3 7 1 十进制数 100.625 等值于二进制数( ) 。 A. 1001100.101 B. 1100100.101 C. 1100100.011

3.

4.

5.

6.

D. 1001100.11

E. 1001100.01

7.

下面哪个部件对于个人桌面电脑的正常运行不是必需的( ) 。 A. CPU B. 图形卡(显卡) C. 光驱 D. 主板 E. 内存 下列哪个网络上常用的名字缩写是错误的( ) 。 A. WWW(World Wide Web) B. URL(Uniform Resource Locator) C. HTTP(Hypertext Transfer Protocol) D. FTP(Fast Transfer Protocol) E. TCP(Transfer Control Protocol) 。

8.

70

江苏省新海高级中学

9.

用静电吸附墨粉后转移到纸张上,是哪种输出设备的工作方式( ) 。 A. 针式打印机 B. 喷墨打印机 C. 激光打印机 D. 笔式绘图仪 E. 喷墨绘图仪

10. 一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行相互转 换的设备,这种设备是( ) 。 A. 调制解调器 B. 路由器 C. 网卡 D. 网关 E. 网桥 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。多选或少选均不得分) 。 11. 美籍匈牙利数学家冯·诺依曼对计算机科学发展所做出的贡献包括( ) 。 A. 提出理想计算机的数学模型,成为计算机科学的理论基础。 B. 提出存储程序工作原理,对现代电子计算机的发展产生深远影响。 C. 设计出第一台具有存储程序功能的计算机 EDVAC。 D. 采用集成电路作为计算机的主要功能部件。 E. 指出计算机性能将以每两年翻一番的速度向前发展。 12. 下列哪个(些)是 64 位处理器( ) 。 A. Intel Itanium B. Intel Pentium III C. AMD Athlon64 D. AMD Opteron E. IBM Power 5 13. (2004)10 + (32)16 的结果是( ) 。 A. (2036)16 B. (2054)10 C. (4006)8 D. (100000000110)2 E. (2036)10 14. 下列哪个(些)不是数据库软件的名称( ) 。 A. MySQL B. SQL Server C. Oracle D. Outlook 15. 下列哪个(些)不是计算机的存储设备( ) 。 A. 文件管理器 B. 内存 C. 显卡 D. 硬盘 16. 下列哪个(些)软件属于操作系统软件( ) 。 A. Microsoft Word B. Windows XP C. Foxmail

E. Foxpro

E. U 盘

D. 金山影霸

E. Red Hat Linux

17. 下列说法中正确的有( ) 。 A. CPU 的基本功能就是执行指令。 B. CPU 的主频是指 CPU 在 1 秒内完成的指令周期数,主频越快的 CPU 速度一定越快。 C. 内部构造不同的 CPU 运行相同的机器语言程序,一定会产生不同的结果。 D. 在一台计算机内部,一个内存地址编码对应唯一的一个内存单元。 E. 数据总线的宽度决定了一次传递数据量的大小,是影响计算机性能的因素之一。 18. 彩色显示器所显示的五彩斑斓的色彩,是由哪三色混合而成的( ) 。
71

江苏省新海高级中学

A. 红

B. 白

C. 蓝

D. 绿

E. 橙

19. 下列哪个(些)程序设计语言支持面向对象程序设计方法( ) 。 A. C++ B. Object Pascal C. C D. Smalltalk E. Java 20. 某大学计算机专业的必修课及其先修课程如下表所示: 课程代号 课程名称 先修课程 C0 高等数学 C1 程序设计语言 C2 离散数学 C0, C1 C3 数据结构 C1, C2 C4 编译技术 C3 C5 操作系统 C3, C7 C6 普通物理 C0 C7 计算机原理 C6

请你判断下列课程安排方案哪个(些)是合理的( ) 。 A. C0, C1, C2, C3, C4, C5, C6, C7 B. C0, C1, C2, C3, C4, C6, C7, C5 C. C0, C1, C6, C7, C2, C3, C4, C5 D. C0, C1, C6, C7, C5, C2, C3, C4 E. C0, C1, C2, C3, C6, C7, C5, C4 三.问题求解(共 2 题,每题 5 分,共计 10 分) 1. 75 名儿童到游乐场去玩。他们可以骑旋转木马,坐滑行铁道,乘宇宙飞船。已知其中 20 人这三种东西都玩过,55 人至少玩过其中的两种。若每样乘坐一次的费用是 5 元,游乐 场总共收入 700,可知有 名儿童没有玩过其中任何一种。 2. 已知 a, b, c, d, e, f, g 七个人中,a 会讲英语;b 会讲英语和汉语;c 会讲英语、意大利语 和俄语;d 会讲汉语和日语;e 会讲意大利语和德语;f 会讲俄语、日语和法语;g 会讲 德语和法语。能否将他们的座位安排在圆桌旁,使得每个人都能与他身边的人交谈?如 果可以,请以“a b”开头写出你的安排方案: 。

四.阅读程序(共 4 题,每题 8 分,共计 32 分) 1.program progam1; varu: array [0..3] of integer; a, b, c, x, y, z: integer; begin read(u[0], u[1], u[2], u[3]); a := u[0] + u[1] + u[2] + u[3] - 5; b := u[0] * (u[1] - u[2] div u[3] + 8); c := u[0] * u[1] div u[2] * u[3]; x := (a + b + 2) * 3 - u[(c + 3) mod 4]; y := (c * 100 - 13) div a div (u[b mod 3] * 5); if((x+y) mod 2 = 0) then z := (a + b + c + x + y) div 2; z := (a + b + c – x - y) * 2; writeln(x + y - z); end.

72

江苏省新海高级中学

输入:2 5 7 4

输出:



2.program program2; var i, number, ndata, sum: integer; data: array[1..100] of integer; procedure solve(s, sign, n: integer); var i: integer; begin for i := s to ndata do begin inc(sum, sign * (number div (n * data[i]))); solve(i + 1, -sign, n * data[i]); end; end; begin read(number ,ndata); sum := 0; for i := 1 to ndata do read(data[i]); solve(1, 1, 1); writeln(sum); end. 输入:1000 3 5 13 11 输出: 3.program program3; var c: array[1..3] of string[200]; s: array[1..10] of integer; m, n, i: integer; procedure numara; var cod: boolean; i, j, nr: integer; begin for j := 1 to n do begin nr := 0; cod := true; for i := 1 to m do if c[i, j] = '1' then begin if not cod then begin cod := true; inc(s[nr]); nr := 0; end end else begin if cod then begin



73

江苏省新海高级中学

nr := 1; cod := false; end else inc(nr); end; if not cod then inc(s[nr]); end; end; begin readln(m, n); for i := 1 to m do readln(c[i]); numara; for i := 1 to m do if s[i] <> 0 then write(i, ' ', s[i], ' '); end. 输入:3 10 1110000111 1100001111 1000000011 输出: 。

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
74

江苏省新海高级中学

题目描述:原始的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.
75

江苏省新海高级中学

2.逻辑游戏 题目描述:一个同学给了我一个逻辑游戏。他给了我图1,在这个图上,每一段边界都已经进 行了编号。我的任务是在图中画一条连续的曲线,使得这条曲线穿过每一个边界一次且仅穿 过一次,而且曲线的起点和终点都在这整个区域的外面。这条曲线是容许自交的。 对于图 1,我的同学告诉我画出这样的一条曲线(图 2)是不可能的,但是对于有的图形 (比如图 3) ,画出这样一条曲线是可行的。对于给定的一个图,我想知道是否可以画出满足 要求的曲线。

图1

图2

图3 图4 输入:输入的图形用一个n×n的矩阵表示的。矩阵的每一个单元里有一个0到255之间(包括0 和255)的整数。处于同一个区域的单元里的数相同,相邻区域的数不同(但是不相邻的区域 里的数可能相同) 。 输入的第一行是n(0<n<100) 。以下的n行每行包括n个整数,分别给出对应的单元里的整 数(这n个整数之间用空格分开) 。图4给出了输入样例对应的图形。 输出: 当可以画出满足题意的曲线的时候,输出“YES” ;否则,输出“NO” 。 输入样例: 3 112 122 112 输出样例: YES 程序: program program2; const d: array[0..7] of integer = (1, 0, -1, 0, 0, 1, ① );
76

江苏省新海高级中学

var orig, n, i, j, ns: integer; a: array[0..101, 0..101] of integer; bun: boolean; procedure plimba(x, y: integer); var i, x1, y1: integer; begin a[x, y] := -a[x, y]; if (abs(a[x - 1, y]) <> orig) and (( ② <> a[x - 1, y]) or (abs(a[x, y - 1]) <> orig)) then inc(ns); if (abs(a[x + 1, y]) <> orig) and ((a[x + 1, y - 1] <> a[x + 1,y]) or (abs(a[x, y - 1]) <> orig)) then inc(ns); if (abs(a[x, y - 1]) <> orig) and (( ③ <> a[x, y - 1]) or (abs(a[x - 1, y]) <> orig)) then inc(ns); if (abs(a[x, y + 1]) <> orig) and ((a[x - 1, y + 1] <> a[x,y + 1]) or (abs(a[x - 1, y]) <> orig)) then inc(ns); for i := 0 to 3 do begin x1 := x + d[2 * i];y1:=y+ ④ ; if (x1 >= 1) and (x1 <= n) and (y1 >= 1) and (y1 <= n) and ( ⑤ ) then plimba(x1, y1); end; end; begin bun := true; read(n); for i := 0 to n+1 do for j := 0 to n+1 do a[i, j] := 0; a[0, 0] := -1; a[n + 1, 0] := -1; a[0, n + 1] := -1; a[n + 1, n + 1] := -1; for i := 1 to n do for j := 1 to n do read(a[i, j]); for i := 1 to n do for j := 1 to n do if a[i, j] > -1 then begin ns := 0; ⑥ ; plimba(i, j); if ns mod 2 = 1 then bun := false; end; if bun then writeln('YES'); if not bun then writeln('NO');
77

江苏省新海高级中学

end.

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

一.单选题(共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确答案) 。 1.图灵(Alan Turing)是( ) 。 A)美国人 B)英国人 C)德国人 D)匈牙利人 E)法国人 2.第一个给计算机写程序的人是( ) 。 A)Alan Mathison Turing B)Ada Lovelace C)John von Neumann D)John Mc-Carthy E)Edsger Wybe-Dijkstra 3.十进制数 2003 等值于二进制数( ) 。 A)0100000111 B)10000011 C)110000111 D)11111010011 E)1111010011 4.假设 A=true,B=false,C=true,D=true,逻辑运算表达式 A∧B∨C∧D 的值是( ) 。 A)true B)false C)0 D)1 E)NULL 5.一个高度为 h 的二叉树最小元素数目是( A)2h+1 B)h C)2h-1 D)2h ) 。 E)2 -1
h

6.已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素为 13, 则第五个出队列的元素是( ) 。 A)5 B)41 C)77 D)13 E)18 7.下面一段程序是用( )语言书写的。 int func1(int n){ int i,sum=0; for (i=1;i<=n;i++) sum+=i*i; return sum; } A)FORTRAN B)PASCAL C)C D)PROLOG

E)BASIC

78

江苏省新海高级中学

8.设全集 E={1,2,3,4,5},集合 A={1,4},B={1,2,5},C={2,4},则集合(A∩B) ∪~C 为( ) 。 A)空集 B){1} C){3,5} D){1,5} E){1,3,5} 9.表达式(1+35)*5-56/7 的后缀表达式为( A)1+34*5-56/7 B)-*+1 34 5 / 56 7 D)1 34 5 *+56 7 /E)1 34 +5 56 7 - * / ) 。 C)1 34 + 5 * 56 7 /-

10.下列计算机设备,既是输入设备,又是输出设备的是( ) 。 A)键盘 B)触摸屏 C)扫描仪 D)投影仪 E)数字化仪 二.不定项选择题(共 10 题,每题 1.5 分,共计 15 分。多选或少选均不得分) 。 11.下列分辨率的显示器所显示出的图像,最清晰的是( ) 。 A)800*600 B)1024*768 C)640*480 D)1280*1024 E)800*1000 12.下列说法中,哪个(些)是错误的( ) 。 A)程序是指令的序列,它有三种结构:顺序、分支和循环。 B)数据总线决定了中央处理器 CPU 所能访问的最大内存空间的大小。 C)中央处理器 CPU 内部有寄存器组,用来存储数据。 D)不同厂家生产的 CPU 所能处理的指令集是相同的。 E)数据传输过程中可能会出错,奇偶校验法可以检测出数据中那一位在传输中出了差错。 13.CPU 访问内存的速度比访问下列哪个(些)存储设备要慢( ) 。 A)寄存器 B)硬盘 C)软盘 D)高速缓存 E)光盘 14.下列电子邮件地址,哪个(些)是正确的( ) 。 A)wang@hotmail.com B)cai@jcc.pc.tool.rf.edu.jp C)162.105.111.22 D)ccf.edu.cn E)http://www.sina.com 15.数字图像文件可以用下列哪个(些)软件来编辑( ) A)画笔(Paintbrush) B)记事簿(Notepad) C)Photoshop D)WinRAR E)Midisoft 16.下列哪个(些)软件不是操作系统软件的名字( A)Windows XP B)DOS C)Linux D)OS/2 ) 。 E)Arch/Info

17.下列哪个(些)不是个人计算机的硬件组成部分( ) 。 A)主板 B)虚拟内存 C)电源 D)硬盘 E)总线 18.运算式(2008)10-(3723)8 的结果是( A) (-1715)10 B) (5)10 C) (5)16 ) 。 D) (101)2

E) (3263)8
79

江苏省新海高级中学

19.已知元素(8,25,14,87,51,90,6,19,20) ,问这些元素以怎样的顺序进入栈,才 能使出栈的顺序满足:8 在 51 前面;90 在 87 后面;20 在 14 后面;25 在 6 前面;19 在 90 后面。 ( ) A)20,6,8,51,90,25,14,19,87 B)51,6,19,20,14,8,87,90,25 C)19,20,90,8,6,25,51,14,87 D)6,25,51,8,20,19,90,87,14 E)25,6,8,51,87,90,19,14,20 20.假设我们用 d=(a1,a2,…,a5) ,表示无向图 G 的 5 个顶点的度数,下面给出的哪(些) 组 d 值合理的( ) 。 A){5,4,4,3,1} B){4,2,2,1,1} C){3,3,3,2,2} D){5,4,3,2,1} E){2,2,2,2,2} 三.问题求解(共 2 题,每题 5 分,共 10 分) 1.无向图 G 有 16 条边,有 3 个 4 度顶点、4 个 3 度顶点,其余顶点的度均小于 3,则 G 至 少 个顶点。 2.某年级学生共选修 6 门课程,期末考试前,必须提前将这 6 门课程考完,每人每天只在下 午至多考一门课程,设 6 门课程分别为 c1,c2,c3,c4,c5,c6,S(ci)为学习 ci 的学生集合。 已知 S(ci)∩S(c6)≠φ ,i=1,2,…,5,S(ci)∩S(ci+1) ≠φ ,i=1,2,3,4,S(c5)∩S(c1)≠φ ,问至少安 排 天才能考完这 6 门课程。 四、阅读程序(共 4 题,每题 8 分,共计 32 分) 1.Program program1; var a,b,c,d,sum:longint; begin read(a,b,c,d); a:=a mod 23; b:=b mod 28; c:=c mod 33; sum:=a*5544+b*14421+c*1288-d; sum:=sum+21252; sum:=sum mod 21252; if (sum=0) then sum:=21252; writeln(sum); end. 输入:283 102 23 320 输出: 2.Program program2; const u: array[1..4]of integer=(0,5,3,1);
80

江苏省新海高级中学

v: array[1..4]of integer=(0,7,6,5); var a,b,c,d,e,f,x,y,z:integer; begin read(a,b,c,d,e,f); z:=f+e+d+(c+3) div 4; y:=5*d+u[c mod 4]; if (b>y) then begin z:=z+(b-y+8) div 9; x:=((b-y+8) div 9*9-(b-y))*4+11*e+v[c mod 4]; end else x:=(y-b)*4+11*e+v[c mod 4]; if (a>x) then z:=z+(a-x+35) div 36; writeln(z); end. 输入:4 7 9 20 56 47 输出: 3.Program program3; var m,n: integer; mark:boolean; function test(m,n: integer): integer; var i,p:integer; flag:boolean; begin m:=m-1; i:=0; flag:=false; for p:=2*n downto (n+1) do begin i:=(i+m) mod p; if (i<N) then begin test:=0; flag:=true; break; end end; if not(flag) then test:=1; end; begin read(n); m:=1; mark:=false; repeat if (test(m,n)=1) then begin writeln(m); break; end; m:=m+1;
81

江苏省新海高级中学

until mark; end. 输入:7 输出: 4.Program program4; var m,n,i,j: integer; p,w,a,b: array[0..19] of integer; begin read(n); m:=0; for i:=0 to n-1 do begin read(p[i]); b[i]:=1; end; for i:=0 to n-1 do begin if (i>0) then a[m]:=p[i]-p[i-1] else a[m]:=p[i]; m:=m+1; while ((m>1) and (a[m-1]=0)) do begin m:=m-1; b[m]:=1; end; if (m>0) then w[i]:=b[m-1] else w[i]:=b[0]; a[m-1]:=a[m-1]-1; for j:=0 to m-1 do b[j]:=b[j]+1; while ((m>1) and (a[m-1]=0)) do begin m:=m-1; b[m]:=1; end; end; for i:=0 to n-1 do begin write(w[i]); write(‘ ‘); end; writeln(‘ ‘); end. 输入:9 4 6 6 6 6 8 9 9 9 输出: 五.完善程序(共 2 题,第 1 题每空 3 分;第 2 题每题 2 分。共 28 分) 1.翻硬币 题目描述:一摞硬币共有 m 枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后
82

江苏省新海高级中学

放回原处。 然后取下最上面的 2 枚硬币, 将他们一起翻面后再放回原处。 再取 3 枚, 取 4 枚…… 直至 m 枚。然后再从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直下去,直到这 螺硬币中的每一枚又都是正面朝上为止。例如,m 为 1 时,翻两次即可。 输入:仅有的一个数字是这螺硬币的枚数 m,0<m<1000。 输出:为了使这螺硬币中的每一枚又都是正面朝上所必需翻的次数。 输入样例:30 输出样例:899 程序: program Program1; var m: integer; function solve(m: integer): integer; var i,t,d: integer; flag:boolean; begin if (m=1) then solve:=( 1 ) else begin d:=2*m+1; t:=2; i:=1; flag:=false; repeat if (t=1) then begin solve:=( 2 ); flag:=true; End else if ( 3 ) then begin solve:=i*m-1; flag:=true; end; else t:=( 4 ); i:=i+1; until flag; end; end; begin read(m); if (( 5 ) and (m<1000)) then writeln( 6 ); end. 2.OIM 地形
83

江苏省新海高级中学

题目描述:二维离散世界有一种地形叫 OIM(OI Mountain) 。这种山的坡度只能上升( ‘/’ ) 或下降( ‘\’ ) ,而且两边的山脚都与地平线等高,山上所有地方都不低于地平线。例如: /\ /\ / \/ \ 是一座 OIM;而/ \ 不是。 \/ 这个世界的地理学家们为了方便记录, 给 OIM 所有可能的形状用正整数编好号, 而且每 个正整数恰好对应一种山形。他们规定,若两座上的宽度不同,则较宽的编号较大;若宽度 相同,则比较从左边开始第 1 个坡度不同的地方,坡度上升的编号较大。以下三座 OIM 的编 号由小到大递增: /\ /\ /\ /\ / \/ \ / \ / \/ \ / \/ \ 。显然 / \ 的编号为 1。但是地理学家在整理记录时发觉, 查找编号与山形的对应关系不是很方便。他们希望能快速地从编号得到山的形状。你自告奋 勇答应给他们写一个程序,输入编号,能马上输出山形。 输入:一个编号(编号大小不超过 600,000,000) , 输出:输入编号所对应的山形,1 座山所占行数恰为它的高度,即山顶上不能有多余空行。 输入样例:15 输出样例: /\ /\ / \/ \ 程序: program Program2; const L:integer=19; SZ:integer=50; UP:char='/'; DN:char= '\'; var i,nth,x,y,h,e,f:integer; m:array [0..1,0..38,0..19] of integer; pic:array [0..49,0..49] of char; procedure init; var k,s,a,b,c:integer; begin for a:=0 to 1 do for b:=0 to 2*L do for c:=0 to L do m[a,b,c]:=0; m[0,0,0]:=1; for k:=0 to 2*L-1 do begin for s:=1 to L do begin
84

江苏省新海高级中学

m[0,k+1,s]:=m[0,k,s+1]+m[1,k,s+1]; m[1,k+1,s]:=( 1 ); end; m[0,k+1,0]:=m[0,k,1]+m[1,k,1]; end; end; procedure draw(k,s,nth:integer); begin if (k=0) then exit; if ((nth-m[1,k,s])>=0) then begin nth:=nth-m[1,k,s]; if (y>h) then ( 2 pic[y,x]:=UP; y:=y+1; end else begin y:=y-1; pic[y,x]:=DN; end; end; begin init; read (nth); for e:=0 to SZ-1 do for f:=0 to SZ-1 do pic[e,f]:=' '; x:=0; y:=0; h:=0; i:=0; while ((nth-m[0,2*i,0]>=0) do begin nth:=nth-m[0,2*i,0]; ( 4 ); end; draw( 5 ); for i:=h downto 0 do begin for e:=0 to x-1 do write (pic[i,e]);

); x:=x+1; draw( 3 );

x:=x+1;

draw(k-1,s-1,nth);

85

江苏省新海高级中学

writeln (' '); end; end.

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

一. 选择一个正确答案代码,填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 1. 微型计算机的问世是由于( )的出现。 A)中小规模集成电路 B)晶体管电路 C) (超)大规模集成电路 D)电子管电路 2. 中央处理器(CPU)能访问的最大存储器容量取决于( ) 。 A)地址总线 B)数据总线 C)控制总线 D)实际内存容量 3. 十进制书 11/128 可用二进制数码序列表示为: ( ) 。 A)1011/1000000 B)1011/100000000 C)0.001011 D)0.0001011 4. 算式(2047)10 -(3FF)16 +(2000)8 的结果是( ) 。 A) (2048)10 B) (2049)10 C) (3746)8 D) (1AF7)16 5. 已知 x =(0.1011010)2 ,则[ x / 2 ]补 =( )2 。 A)0.1011101 B)11110110 C)0.0101101 D)0.100110 6. IPv4 地址是由( )位二进制数码表示的。 A)16 B)32 C)24 D)8 7. 计算机病毒传染的必要条件是: ( ) 。 A)在内存中运行病毒程序 B)对磁盘进行读写操作 C)在内存中运行含有病毒的可执行的程序 D)复制文件 8. 在磁盘上建立子目录有许多优点,下列描述中不属于建立子目录优点的是( ) 。 A)便于文件管理 B)解决根目录中目录项个数有限问题 C)加快文件查找速度 D)节省磁盘使用空间

86

江苏省新海高级中学

9. 在使用 E-mail 前,需要对 Outlook 进行设置,其中 ISP 接收电子邮件的服务器称为( 服务器。 A)POP3 B)SMTP C)DNS D)FTP 10.多媒体计算机是指( )计算机。 A)专供家庭使用的 B)装有 CD-ROM 的 C)连接在网络上的高级 D)具有处理文字、图形、声音、影像等信息的 11.微型计算机中, ( )的存取速度最快。 A)高速缓存 B)外存储器 C)寄存器 D)内存储器 12.资源管理器的目录前图标中增加“+”号,这个符号的意思是( ) 。 A)该目录下的子目录已经展开 B)该目录下还有子目录未展开 C)该目录下没有子目录 D)该目录为空目录 13.在 WORD 文档编辑中实现图文混合排版时,关于文本框的下列叙述正确的是( ) 。 A)文本框中的图形没有办法和文档中输入文字叠加在一起,只能在文档的不同位置 B)文本框中的图形不可以衬于文档中输入的文字的下方 C)通过文本框,可以实现图形和文档中输入的文字的叠加,也可以实现文字环绕 D)将图形放入文本框后,文档中输入的文字不能环绕图形



14. 一个向量第一个元素的存储地址是 100, 每个元素的长度是 2, 则地 5 个元素的地址是 ( ) 。 A)110 B)108 C)100 D)109 15.已知 A = 35H,A /\ 05H \/ A /\ 30H 的结果是: ( ) 。 A)30H B)05H C)35H D)53H 16.设有一个含有 13 个元素的 Hash 表(0 ~ 12) ,Hash 函数是:H(key)= key % 13, ,其中% 是求余数运算。用线性探查法解决冲突,则对于序列(2、8、31、20、19、18、53、27) , 18 应放在第( )号格中。 A)5 B)9 C)4 D)0 17.按照二叉数的定义,具有 3 个结点的二叉树有( A)3 B)4 C)5 D)6 )种。

18.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的( )倍。 A)1/2 B)1 C)2 D)4 19.要使 1 . . .8 号格字的访问顺序为:8、2、6、5、7、3、1、4,则下图中的空格中应填 入( ) 。
87

江苏省新海高级中学

1 4

2 6

3 1

4 -1

5 7

6

7 3

8 2

A)6 B)0 C)5 D)3 20.设栈 S 和队列 Q 的初始状态为空,元素 e 1 ,e 2 ,e 3 ,e 4 ,e 5 ,e 6 依次通过栈 S,一 个元素出栈后即进入队列 Q,若出队的顺序为 e 2 ,e 4 ,e 3 ,e 6 ,e 5 ,e 1 ,则栈 S 的 容量至少应该为( ) 。 A)2 B)3 C)4 D)5 二.问题求解: (6 + 8 = 14 分) 1. 在书架上放有编号为 1 ,2 , . . . ,n 的 n 本书。现将 n 本书全部取下然后再放回去,当 放回去时要求每本书都不能放在原来的位置上。例如:n = 3 时: 原来位置为:1 2 3 放回去时只能为:3 1 2 或 2 3 1 这两种 问题:求当 n = 5 时满足以上条件的放法共有多少种?(不用列出每种放法) 2. 设有一棵 k 叉树,其中只有度为 0 和 k 两种结点,设 n 0 ,n k ,分别表示度为 0 和度为 k 的结点个数,试求出 n 0 和 n k 之间的关系(n 0 = 数学表达式,数学表达式仅含 n k 、 k 和数字) 。 三.阅读程序,写出正确的程序运行结果: (8 + 9 + 9 = 26 分) 1. program Gxp1; var i , n , jr , jw , jb : integer ; ch1 : char ; ch : array[1..20] of char ; begin readln(n); for i:=1 to n do read(ch[i]); jr:=1; jw:=n; jb:=n; while (jr<=jw) do begin if (ch[jw]=’R’) then begin ch1:=ch[jr]; ch[jr]:=ch[jw]; ch[jw]:=ch1; jr:=jr+1; end else if ch[jw]=’W’ then jw:=jw-1; else begin ch1:=ch[jw]; ch[jw]:=ch[jb]; ch[jb]:=ch1; jw:=jw-1; jb:=jb-1;

88

江苏省新海高级中学

end end; for i:=1 to n do write(ch[1]); writeln; end. 输入:10 RBRBWWRBBR 输出: 2. program Gxp2; var i , j , s ,sp1 : integer ; p : boolean ; a : array[1..10] of integer ; begin sp1:=1; a[1]:=2; j:=2; while sp1<10 do begin j:=j+1; p:=true; for i:=2 to j-1 do if (j mod i=0) then p:=false; if p then begin sp1:=sp1+1; a[sp1]:=j; end; end; j:=2; p:=true; while p do begin s:=1; for i:=1 to j do s:=s*a[i]; s:=s+1; for i:=2 to s-1 do if s mod i=0 then p:=false; j:=j+1; end; writeln(s); writeln; end. 输出: 3. Program Gxp2 Var d1 , d2 , X , Min : real ;
89

江苏省新海高级中学

begin Min:=10000; X:=3; while X<15 do begin d1:=sqrt(9+(X-3)*(X-3)); d2:=sqrt(36+(15-X)*(15-X)); if(d1+d2)<Min then Min:=d1+d2; X:=x+0.001; end; writeln(Min:10:2); end. 输出: 四.完善程序: (15 + 15 = 30 分) 1. 问题描述:工厂在每天的生产中,需要一定数量的零件,同时也可以知道每天生产一个 零件的生产单价。在 N 天的生产中,当天生产的零件可以满足当天的需要, 若当天用不完,可以放到下一天去使用,但要收取每个零件的保管费,不同 的天收取的费用也不相同。 问题求解:求得一个 N 天的生产计划(即 N 天中每天应生产零件个数) ,使总的费用最 少。 输入:N(天数 N<=29) 每天的需求量(N 个整数) 每天生产零件的单价(N 个整数) 每天保管零件的单价(N 个整数) 输出:每天的生产零件个数(N 个整数) 例如:当 N=3 时,其需要量与费用如下: 第一天 需 要 量 生产单价 保管单价 第一天 25 40 70 第二天 15 0 0 25 20 5 第三天 30 30 0 第二天 15 30 10 第三天 30 32 0 总的费用 25*20+15*30+30*32=1910 40*20+15*5+30*32=1835 70*20+45*5+30*10=1925

生产计划的安排可以有许多方案,如下面的三种:

程序说明: b[n]:存放每天的需求量 c[n]:每天生产零件的单价 d[n]:每天保管零件的单价 e[n]:生产计划

90

江苏省新海高级中学

程序: program exp5; var i,j,n,yu,j0,j1,s : integer ; b,c,d,e : array[0..30] of integer ; begin readln(n); for i:=1 to n do readln(b[i],c[i],d[i]); for i:=1 to n do e[i]:=0; ①__________:=10000; c[n+2]=0; b[n+1]:=0 j0:=1; while (j0<=n) do begin yu:=c[j0]; j1:=j0; s:=b[j0]; while ②__________ do begin ③__________ j1:=j1+1; s:=s+b[j1]; end; ④__________ j0:=j1+1; end; for i:=1 to n do ⑤__________ readln; end. 2.问题描述:有 n 种基本物质(n≤10) ,分别记为 P1,P2,??,Pn,用 n 种基本物质构造 物质,这些物品使用在 k 个不同地区(k≤20) ,每个地区对物品提出自己的 要求,这些要求用一个 n 位的数表示:a1a2??a n,其中: ai = 1 表示所需物质中必须有第 i 种基本物质 = -1 表示所需物质中必须不能有第 i 种基本物质 = 0 无所谓 问题求解:当 k 个不同要求给出之后,给出一种方案,指出哪些物质被使用,哪些物质 不被使用。 程序说明:数组 b[1],b[2]……b[n] 表示某种物质 a[1..k,1..n] 记录 k 个地区对物品的要求,其中: a[i,j]=1 表示第 i 个地区对第 j 种物品是需要的 a[i,j]=0 表示第 i 个地区对第 j 种物品是无所谓的 a[i,j]= -1 表示第 i 个地区对第 j 种物品是不需要的 程序: program gxp2; var i,j,k,n : integer ;
91

江苏省新海高级中学

p : boolean ; b : array[0..20] of 0..1 ; a : array[1..20,1..10] of integer ; begin readln(n,k); for i:=1 to k do begin for j:=1 to n do read(a[i,j]); readln; end; for i:=0 to n do b[i]:=0; p:=true; while ①__________ do begin j:=n; while b[j]=1 do j:=j-1; ②__________ for i:=j+1 to n do b[i]:=0; ③__________ for i:=1 to k do for j:=1 to n do if (a[i,j]=1) and (b[j]=0) or ④__________ then p:=true; end; if ⑤__________ then writeln(‘找不到!’) else for i:=1 to n do if (b[i]=1) then writeln(‘物质’,i,’需要’) else writeln(‘物质’,i,’不需要’); end.

92

江苏省新海高级中学

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

一. 选择一个正确答案代码(A/B/C/D) ,填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 1.中央处理器 CPU 能访问的最大存储器容量取决于( ) A)地址总线 B)数据总线 C)控制总线 D)内存容量 2.计算机软件保护法是用来保护软件( )的。 A)编写权 B)复制权 C)使用权

D)著作权

3.64KB 的存储器用十六进制表示,它的最大的地址码是( ) A)10000 B)FFFF C)1FFFF D)EFFFF 4.在树型目录结构中,不允许两个文件名相同主要指的是( ) A)同一个磁盘的不同目录下 B)不同磁盘的同一个目录下 C)不同磁盘的不同目录下 D)同一个磁盘的同一个目录下 5.下列设备哪一项不是计算机输入设备( ) A)鼠标 B)扫描仪 C)数字化仪 6.在计算机硬件系统中,cache 是( A)只读 B)可编程只读

D)绘图仪

)存储器 C)可擦除可编程只读

D)高速缓冲

7.若我们说一个微机的 CPU 是用的 PII300,此处的 300 确切指的是( ) A)CPU 的主时钟频率 B)CPU 产品的系列号 C)每秒执行 300 百万条指令 D)此种 CPU 允许最大内存容量 8.E—mail 邮件本质上是一个( A)文件 B)电报 ) C)电话 D)传真

9.2KB 的内存能存储( )个汉字的机内码 A)1024 B)516 C)2048 10.以下对 Windows 的叙述中,正确的是( ) A)从软盘上删除的文件和文件夹,不送到回收站

D)218

93

江苏省新海高级中学

B)在同一个文件夹中,可以创建两个同类、同名的文件 C)删除了某个应用程序的快捷方式,将删除该应用程序对应的文件 D)不能打开两个写字板应用程序 11.运算式(2047)10-(3FF)16+(2000)8 的结果是( A) (2048)10 B) (2049)10 C) (3746)8 12.TCP/IP 协议共有( )层协议 A)3 B)4 ) D) (1AF7)16

C)5

D)6

13.若已知一个栈的入栈顺序是 1,2,3,…..,n,其输出序列为 P1,P2,P3,…..,Pn,若 P1 是 n,则 Pi 是( ) A)i B)n-i C)n-i+1 D)不确定 14.计算机病毒是( ) A)通过计算机传播的危害人体健康的一种病毒 B) 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C) 一种由于计算机元器件老化而产生的对生态环境有害的物质 D)利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒 E) 15.下面关于算法的错误说法是( ) A)算法必须有输出 B)算法必须在计算机上用某种语言实现 C)算法不一定有输入 D)算法必须在有限步执行后能结束 16.[x]补码=10011000,其原码为( A)011001111 B)11101000 17.以下哪一个不是栈的基本运算( A)删除栈顶元素 C)判断栈是否为空 ) C)11100110 ) B)删除栈底元素 D)将栈置为空栈 D)01100101

18.在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找 12,所需 的关键码比较的次数为( ) A)2 B)3 C )4 D)5 19.一棵二叉树的高度为 h,所有结点的度为 0,或为 2,则此树最少有( A)2h-1 B)2h-1 C)2h+1 D)h+1 )个结点

20.无向图 G=(V,E) ,其中 V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)} 对该图 进行深度优先遍历,得到的顶点序列正确的是( )
94

江苏省新海高级中学

A)a,b,c,d,e,f

B) a,c,f,e,b,d

C) a,e,b,c,f,d

D) a,b,e,d,f,c

二.问题求解(5+7=12 分) 1. 已 知 一 棵 二 叉 树 的 结 点 名 为 大 写 英 文 字 母 , 其 中 序 与 后 序 遍 历 的 顺 序 分 别 为 : CBGEAFHDIJ 与 CGEBHFJIDA 则该二叉树的先序遍历的顺序为: 2. 平面上有三条平行直线,每条直线上分别有 7,5,6 个点,且不同直线上三个点都不在同 一条直线上,问用这些点为顶点,能组成多少个不同四边形? 三.阅读程序,写出程序的正确运行结果(4+7+8+9=28 分) 1. PROGRAM GAO7_1; FUNCTION ACK(M,N:INTEGER) :INTEGER; BEGIN IF M=0 THEN ACK:=N+1 ELSE IF N=0 THEN ACK:=ACK(M-1,1) ELSE ACK:=ACK(M-1,ACK(M,N-1) ) END; BEGIN WRITELN(ACK(3,4) ) ;READLN; END. 输出: 2. PROGRAM GAO7_2; VAR P,Q,S,T:INTEGER; BEGIN READLN(P) ; FOR Q:=P+1 TO 2*P DO BEGIN T:=0;S:=(P*Q)MOD (Q-P) ; IF S=0 THEN BEGIN T:=P+Q+(P*Q) DIV (Q-P) ;WRITE(T:4) ;END; END; END. 输入:12 输出: 3. PROGRAM GAO7_3; VAR I,J,H,M,N,K:INTEGER; B:ARRAY[1..10] OF INTEGER; BEGIN READLN(N) ; FOR I:=1 TO 10 DO
95

江苏省新海高级中学

BEGIN M:=N;J:=11; WHILE M>0 DO BEGIN J:=J-1;B[J]:=M MOD 10;M:=M DIV 10 END; FOR H:=J TO 10 DO N:=N+B[H]; END; WRITELN(N) ; END. 输入:1234 输出: 4. PROGRAM GAO7_4; VAR X,Y1,Y2,Y3:INTEGER; BEGIN READLN(X) ;Y1:=0;Y2:=1;Y3:=1; WHILE Y2<=X DO BEGIN Y1:=Y1+1;Y3:=Y3+2;Y2:=Y2+Y3 END; WRITELN(Y1) ; END. 输入:23420 输出: 四.完善程序 (每空`3 分,共 30 分) 1. 存储空间的回收算法。设在内寸中已经存放了若干个作业 A,B,C,D。其余的空间为 可用的(如图一中(a) ) 。

100 300 500

A 50 B 100 C 100 D
图一(a)

d d d d

L 下靠 L 上, 下靠 L 上,下不靠 L
图一(b)

此时, 可用空间可用一个二维数组 dk[1..100, 1..2]表示, (如下表一中 (a) ) , 其中: dk[i,1] 对应第 i 个可用空间首址,dk[i,2]对应第 i 个可用空间长度如上图中,dk: 100 300 500 50 100 100 0 100 表一(a) 0 50 表一(b)
96

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

300 500 10000

100 100 0

97

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

现某个作业释放一个区域,其首址为 d,长度为 L,此时将释放区域加入到可用空间中。 要求在加入时,若可用空间相邻时,则必须进行合并。因此出现下面的 4 种情况(如上图一 (b)所示) 。 (1) 下靠,即回收区域和下面可用空间相邻,例如 d=80,L=20,此时成为表二中的(a). (2) 上靠,例如,d=600,L=50,此时表成为表二中的(b) 。 (3) 上、下靠,例如,d=150,L=150,此时表成为表二中的(c) 。 (4) 上、下不靠,例如,d=430,L=20,此时表成为表二中的(d) 。 80 300 500 70 100 100 100 300 500 50 100 150 100 500 300 100 100 300 430 500 表二(a) (下靠) 表二(b) (上靠) 表二(c) (上、下靠) 50 100 20 100

表二(d) (上、下不靠)

程序说明:对数组 dk 预置 2 个标志,即头和尾标志,成为表一(b),这样可使算法简单,sp 为 dk 表末地址。 程序清单: PROGRAM GAO7_5; VAR I,J,SP,D,L:INTEGER; DK:ARRAY[0..100,1..2] OF INTEGER; BEGIN READLN(SP) ; FOR I:=1 TO SP DO READLN(DK(I,1) ,DK[I,2]) ; DK[0,1]:=0;DK[0,2]:=0: ① ; DK[SP,1]:=10000;DK[SP,2]:=0;READLN(D,L) ;I:=1; WHILE DK[I,1]<D DO I:=I+1; ② ; IF (DK[I,1]+DK[I,2]=D) THEN IF (D+L=DK[I+1,1] THEN BEGIN DK[I,2]:= ③ ; FOR J:=I+1 TO SP-1 DO DK[J]:=DK[J+1]; SP:=SP-1; END ELSE IF (D+L=DK[I+1,1]) THEN BEGIN DK[I+1,1]:= ④ ; DK[I+1,2]:=DK[I+1,2]+L;
98

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

FOR END.

END ELSE BEGIN FOR J:=SP DOWNTO I+1 DO DK[J+1]:=DK[J]; ⑤ :=D;DK[I+1,2]:=L;SP:=SP+1; END; I:=1 TO SP-1 DO WRITELN(DK[I,1]:4,DK[I,2]:4);READLN;

2. 关键路径 设有一个工程网络如下图表示(无环路的有向图) : 其中,顶点表示活动,①表示工程开始,④⑤表示工程结束(可变,用 N 表示) ,边上的 数字表示活动延续的时间。 ② 5 6 6 ① 2 ④ ⑤ 4 5 ③ 如上图中,活动①开始 5 天后活动②才能开始,而活动③则要等①、②完成之后才能开始, 即最早也要 7 天后才能工作。 在工程网络中,延续时间最长的路径称为关键路径。上图中的关键路径为: ①→②→③→④→⑤ 共 18 天完成。 关键路径的算法如下: 1. 数据结构: R[1..N,1..N] OF INTEGER;表示活动的延续时间,若无连线,则用 -1 表示; EET[1..N] 表示活动最早可以开始的时间; ET[1..N] 表示活动最迟应该开始的时间 关键路径通过点 J,具有如下的性质:EET[J]=ET[J] 2. 约定: 结点的排列已经过拓扑排序,即序号前面的结点会影响序号后面结点的活动。 程序清单: PROGRAM GAO7_6; VAR I,J,N,MAX,MIN,W,X,Y:INTEGER; R:ARRAY[1..20,1..20] OF INTEGER; EET,ET:ARRAY[1..20] OF INTEGER; BEGIN READLN(N) ; FOR I:=1 TO N DO FOR J:=1 TO N DO R[I,J]:=--1; READLN(X,Y,W) ;{输入从活动 X 到活动 Y 的延续时间,以 0 为结束}
99

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

WHILE X<>0 DO BEGIN R[X,Y]:=W; ① ; END; EET[1]:=0;{认为工程从 0 天开始} FOR I:=2 TO N DO BEGIN MAX:=0; FOR J:=1 TO N DO IF R[J,I]<> -1 THEN IF ② THEN MAX:=R[J,I]+EET[J]; EET[I]:=MAX; END; ③ FOR I:=N-1 DOWNTO 1 DO BEGIN MIN:=10000; FOR J:=1 TO N DO IF R[I,J]<> -1 THEN IF ④ THEN MIN:=ET[J]-R[I,J]; ET[I]:=MIN; END; WRITELN(EET[N]) ; FOR I:=1 TO N-1 DO IF ⑤ THEN WRITE(I, ‘->’ ) ; WRITE(N) ;READLN; END.

100

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

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

一. 选择一个正确答案代码,填入每题的括号内(每题 1.5 分,多选无分,共 30 分) 1.下列无符号数中,最小的数是( ) A.(11011001)2 B.(75)10 C.(37)8 D.(2A)16 2.在外部设备中,绘图仪属于( A. 输入设备 B.输出设备 C. 辅(外)存储器 3.计算机主机是由 CPU 与( )构成的 A. 控制器 B. 输入、输出设备 C. 运算器 4.计算机病毒的特点是( ) A. 传播性、潜伏性、易读性与隐蔽性 C. 传播性、潜伏性、破坏性与隐蔽性

D.主(内)存储器

D.内存储器

B. 破坏性、传播性、潜伏性与安全性 D. 传播性、潜伏性、破坏性与易读性

5.WINDOWS 9X 是一种( )操作系统 A. 单任务字符方式 B. 单任务图形方式 C. 多任务字符方式 D. 多任务图形方式 6.Internet 的规范译名应为( ) A. 英特尔网 B. 因特网 C. 万维网 7.计算机网络是一个( )系统 A.管理信息系统 B.管理数据系统

D. 以太网

C.编译系统

D. 在协议控制下的多机互连系统

8.计算机系统总线上传送的信号有( ) A.地址信号与控制信号 B. 数据信号、控制信号与地址信号 C.控制信号与数据信号 D. 数据信号与地址信号 9.计算机的运算速度取决于给定的时间内,它的处理器所能处理的数据量。处理器一次能处 理的数据量叫字长。 已知 64 位的奔腾处理器一次能处理 64 个信息位, 相当于 ( )字节。 A.8 个 B.1 个 C.16 个 D. 2 个 10.某种计算机的内存容量是 640K,这里的 640K 容量是指( )个字节 A.640 B. 640*1000 C. 640*1024 D. 640*1024*1024

101

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

11.下面哪些计算机网络不是按覆盖地域划分的( ) A.局域网 B. 都市网 C.广域网 D. 星型网 12.在有 N 个叶子节点的哈夫曼树中,其节点总数为( A.不确定 B. 2N-1 C. 2N+1 D. 2N )

13.已知数组中 A 中,每个元素 A(I,J)在存贮时要占 3 个字节,设 I 从 1 变化到 8,J 从 1 变化到 10,分配内存时是从地址 SA 开始连续按行存贮分配的。试问:A(5,8)的起始地 址为( ) A.SA+141 B. SA+180 C. SA+222 D. SA+225 14.不同类型的存储器组成了多层次结构的存储器体系, 按存取速度从快到慢的排列是 ( A.快存/辅存/主存 B. 外存/主存/辅存 C. 快存/主存/辅存 D. 主存/辅存/外存 )

15.某数列有 1000 个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索 (binary-search) ,在最坏的情况下,需检视( )个单元。 A.1000 B. 10 C. 100 D. 500 16.请仔读下列程序段: Var a:array[1..3,1..4]of integer; b:array[1..4,1..3]of integer; x,y:integer; begin for x:=1to3do for y:=1to4do a[x,y]:=x-y; for x:=4 downto 1 do for y:=1 to 3 do b[x,y]:=a[y,x]; writeln(b[3,2]); end. 上列程序段的正确揄出是( ) A.-1 B. -2 C. -3 D. –4 17.线性表若采用链表存贮结构,要求内存中可用存贮单元地址( ) A.必须连续 B. 部分地址必须连续 C. 一定不连续 D. 连续不连续均可 18.下列叙述中,正确的是( )
102

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

A.线性表的线性存贮结构优于链表存贮结构 B.队列的操作方式是先进后出 C.栈的操作方式是先进先出 D. 二维数组是指它的每个数据元素为一个线性表的线性表 19.电线上停着两种鸟(A,B) ,可以看出两只相邻的鸟就将电线分为了一个线段。这些线段 可分为两类:一类是两端的小鸟相同;另一类则是两端的小鸟不相同。 已知: 电线两个顶点上正好停着相同的小鸟, 试问两端为不同小鸟的线段数目一定是 ( ) 。 A.奇数 B. 偶数 C. 可奇可偶 D. 数目固定 20.一个文本屏幕有 25 列及 80 行,屏幕的左上角以(1,1)表示,而右下角则以(80,25) 表示,屏幕上每一个字符占用两字节(byte) ,整个屏幕则以线性方式存储在电脑的存储器内, 内屏幕左上角开始,位移为 0,然后逐列逐列存储。求位於屏幕(X,Y)的第一个字节的位 移是( ) A.(Y*80+X)*2-1 B.( (Y-1)*80+X-1)*2 C.(Y*80+X-1)*2 D.( (Y-1)*80+X)*2-1 二.问题求解: (6+6=12 分) 1. 已知,按中序遍历二叉树的结果为:abc 问:有多少种不同形态的二叉树可以得到这一遍历结果,并画出这些二叉树。 2. 设有一个共有 n 级的楼梯,某人每步可走 1 级,也可走 2 级,也可走 3 级,用递推公式给 出某人从底层开始走完全部楼梯的走法。 例如: 当 n=3 时, 共有 4 种走法, 即 1+1+1, 1+2, 2+1,3。 三、阅读程序,并写出正确的运行结果(每题 10 分,共 20 分) 1. program noi_001; const n=7; m=6; var i,j,x0,y0,x1,y1,x2,y2:integer; d:real; p:boolean; g:array[0..n,0..m] of 0..1; function disp(x1,y1,x2,y2:integer):real; begin disp:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); end; begin for i:=0 t0 n do for j:=0 to m do g[i,j]:=0; readln(x1,y1,x2,y2); g[x1,y1]:=1; g[x2,y2]:=1; p:=true; while p do begin p:=false; d:=disp(x1,y1,x2,y2); x0:=x1; y0:=y1; for i:=4 to n do for j:=0 to m do if (d>disp(i,j,x2,y2))and(g[i,j]=0)then begin d:=disp(i,j,x2,y2); x0:=i; y0:=j; end;
103

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

if (x0<>x1) or (y0<>y1) then begin x1:=x0; y1:=y0; p:=true; g[x1,y1]:=1; end; d:=disp(x1,y1,x2,y2); x0:=x2; y0:=y2; for i:=0 to 3 do for j:=0 to m do if(d<disp(x1,y1,i,j)and(g[i,j]=0) then begin d:=disp(x1,y1,i,j); x0:=i; y0:=j end; if (x0<>x2)or(y0<>y2) then begin x2:=x0;y2=y0;p:=true; g[x2,y2]:=1; end; end; writeln(x1,y1,x2,y2) end. 输入:7 6 0 0 输出: 2. program noi_002; var i,j,l,n,k,s,t:integer; b:array[1..10] of 0..9; begin readln(l,n); s:=l; k:=1; t:=l; if n>l then begin while s<n do begin k:=k+1;t:=t*l;s:=s+t end; s:=s-t;n:=n-s-1; for i:=1 to 10 do b[i]:=0; j:=11; while n>0 do begin j:=j-1; b[j]:=n mod l; n:=n div l end; for i:=10-k+1 to 10 do write(chr(ord(’a ’)+b[i])); readln; end else writeln(chr(ord(’a’)+n-1)) end 输入: 4 167 输出: 四、完善程序(共 38 分) 1.问题描述:将 2n 个 0 和 2n 个 1,排成一个圈。从任一个位置 开始, 每次按逆时针的方向以长度为 n+1 的单位进行数二进制数。 要求给出一种排法,用上面的方法产生出来的 2n+1 个二进制数都 不相同。 例如,当 n=2 时,即 22 个 0 和 22 个 1 排成如下一圈,见右图:

104

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

比如,从 A 位置开始,逆时针方向取三个数 000,然后再从 B 位置上开始取三个数 001,接 着从 C 开始取三个数 010,…可以得到 000,001,010,101,011,111,110,100 共 8 个二 进制数且都不相同。 程序说明:以 N=4 为例,即有 16 个 0,16 个 1,数组 A 用以记录 32 个 0,1 的排法,数组 B 统计二进制数是否已出现过。 程序清单 program noi00; var a :array[1..36] of 0..1; b :array[0..31] of integer; i,j,k,s,p:integer; begin for i:=1 to 36 do a[i]:=0; for i:=28 to 32 do a[i]:=1; p:=1;a[6]:=1; while (p=1) do begin j:=27; while a[j]=1 do j:=j-1; ( ① ) for i:=j+1to 27 do( ② ) for i:=0 to 31 do b[1]:=o; for i:=1 to 32 do begin ( ③ ) for k:=i to i+4 do s:=s*2+a[k]; ( ④ ) end; s:=0; for i:=0 to 31 do s:=s+b[i]; if( ⑤ )then p:=0 end; for i:=1 to 32 do for j:=i to i+4 do write(a[j]); writeln end. 2. 问题描述: 求出一棵树的深度和宽度。 例如有如右图所示的一棵树: 其树的深度为从根结点开始到叶结点结束的最大深度,树的宽度为同 一层上结点数的最大值。在上图中树的深度为 4,宽度为 3。用邻接表

105

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

来表示树,上图中的树的邻接表示如下: 程序清单 program noi00_6; var i,j,sp1,sp2,l,max:integer; tree:array[1..20,1..6]of integer; q:array[1..100,0..6] of integer; d:array[0..20]of integer; begin for i:=1 to 14 do for j:=1 to 6 do tree[i,j]:=o; for j:=1 to 14 do tree[j,1]:=j; tree[1,2]:=2; tree [1,3]:=3; tree[1,4]:=4; tree[2,2]:=5; tree[2,3]:=6; tree [3,2]:=7; tree[3,3]:=8; tree[4,2]:=9; tree[4,3]:=10; tree[4,4]:=11; tree[7,2]:=12; tree[7,3]:=13; tree[13,2]:=14; sp1:=1; sp2:=1; for i:=1 to 6 do q[1,i]:=tree[1,i]; q[1,0]:=1; while( ① ) do begin l:=( ② ); j:=2; while( ③ )do begin sp2:=sp2+1;q[sp2,0]:=l;q[sp2,1]:=q[sp1,j]; for i:=2 to 6 do q[sp2,i]:=tree[q[sp1,j],i]; j:=j+1 end; sp1:=sp1+1 end; writeln( ④ ) for i:=0 to 20 do d[i]:=0; for i:=1 to sp2 do d[q[i,0]]:=( ⑤ ) max:=d[1]; for i:=2 to 20 do if d[i]>max then max:=d[i]; writeln(max); readln; end.

1 2 3 4 5 6 7

2 0 5 6 0 7 0

3 0 0 0 0 0 0

4 0 0 0 0 0 0

0 0 0 0 0 0 0

0 0 0 0 0 0 0

树的邻接表

106

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

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

一.选择一个正确答案代码,填入每题的话号内(每题 1.5 分,多选无分,共 30 分) 1. 微机内存储器的地址是按( )编址的。 A. 二进制位 B. 字长 C.字节 D. 微处理器的型号 2. 下列诸因素中,对微机工作影响最小的是( ) A.尘土 B. 噪声 C. 温度 D. 湿度 3.在 24*24 点阵的“字库”中,汉字“一”与“编”的字模占用字节数分别是( ) A.32,32 B.32,72 C.72,72 D.72,32 4.将 DOS 系统盘插入 A 驱动器启动机器,随后使用一批应用软件,在此过程中,DOS 系统盘 ( ) A. 必须始终插入在 A 驱动器中 B. 不必再用 B. C.可能有时要插入 A 驱动器中 D.可能有时要插入 B 驱动中 5.以下 DOS 命令中,有可能在磁盘上建立子目录的是( ) . A.type B. dir C.xcopy D.cd 6.在 config.sys 文件中,装入特定的可安装设备驱动程序的命令是( ) . A.buffer B.files C.driver D.device 7.计算机能直接执行的指令包括两部分,它们是( ) . A.源操作数与目标操作数 B.操作码与操作数 C.ASCII 码与汉字代码 8、在微机中;通用寄存器的位数是( ) . A 8 位 B.16 位 C.计算机字长 D.32 位 9.在计算机中,字符编码通常采用( ) A.原码 B.反码 C.ASCII 码 D.补码 10. 计算机的软件系统通常分为( )

D.数字与字符

107

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

A 系统软件与应用软件 C 军用软件与民用软件

B 高级软件与一般软件 D 管理软件与控制软件

11. 执行 DOS 命令:C>ATTRIB A:*.*的功能是( ) A.查看 A 盘上所有文件属性 B.查看 A 盘上当前目录中所有文件属性 C.查看 A 盘上所有系统文件属性 D.删去 A 盘上所有隐含文件的属性 12.执件下列 DOS 命令,效果等价的是( )组. A. copy *.for 与 copy *.for con B. copy A: *.* B: 与 xcopy A:*.* B: C. copy fole1.txt + file2.txt 与 copy flle2.txt + file1.txt D. xcopy A:*.* B:/S 与 diskcopy A:B: 13.已知小写字母‘m’的十六进制的 ASCll 码值是 6D,则小写字母‘c’的十六进制的 ASCll 码值是( ) A.98 B.62 C.99 D.63 14、计算机中的数有浮点数与定点数两种,其中用浮点数表示的数,通常由( 成。 A.指数与基数 B. 尾数与小数 C. 阶码与尾数 D.整数与小数 15.下列文件名中,属于 DOS 中的保留设备名的为( ) A.AUX B.COM C.CON1 D.PRNL 16 启动计算机引导 DOS 是将操作系统( ) A. 从磁盘调入中央处理器 B. 从内存储器调入高速缓冲存储器 C. 从软盘调入硬盘 D. 从系统盘调入内存储器 17. 十进制算术表达式:3*512+7*64+4*8+5 的运算结果,用二进制表示为( ) . A. 10111100101 B.11111100101 C.1111l0100101 D.11111101101 l8.组成’教授’ (jiao shou )’副教授’ (fu jiao shou )与’讲师’ ( jiang shi)这三个词的 汉字,在 GB2312-80 字符集中都是一级汉字.对这三个词排序的结果是( ) . A 教授,副教授,讲师 B.副教授,教授,讲师 C 讲师,副教授,教授 D.副教授,讲师,教授 19.不同的计算机,其指令系统也不同,这主要取决于( ) . A 所用的操作系统 B. 系统的总体结构 C.所用的 CPU )两部分组

D.所用的程序设计语言

20.对具有隐含属性(H)的当前目录下的文件 ab. txt,能成功执行的 DOS 命令是( )
108

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

A. TYPE C. DIR

ab.txt ab.txt

B.COPY ab. txt D. REN ab. txt

xy. txt xy. Txt

二.回答问题: (10 分) 将 Ln 定义为求在一个平面中用 n 条直线所能确定的最大区域数目,例如:当 n=1 时, L1=2,进一步考虑,用 n 条折成角的直线(角度任意) ,放在平面上能确定的最大区域数目 Zn 是多少?例如当 n=1 时,Z1=2(如下图所示) :

1 2

当给出 n 后,请写出以下的表达式: Ln=_______________________ Zn=_______________________ 30 分)

三.阅读程序,并写出程序的正确运行结果: (每题 15 分,共 1、 program exgp1; var i,j,k:integer; a:array[0..100] of integer; begin for i:=0 to 100 do a[i]:=i; for k:=5 downto 2 do begin for i:=1 to 100 do if (i mod k)=0 then a[i]:=0; for i:=1 to 99 do for j:=1 to 100-i do if a[j]>a[i+1] then begin a[j]:=a[j+1]; a[j+1]:=a[j]-a[j+1]; a[j]:=a[j]-a[j+1]; end; end; j:=1; while (a[j]=0) and (j<100) do j:=j+1; for i:=j to 100 do a[0]:=a[0]+a[i]; writeln(a[0]); end. 本题的运行结果是:

2、 设数组 A[1],A[2],?A[N],已存入了数据,调用不同的排序程序,则数据比较的次数 将会不同,试计算出分别调用下列不同的排序程序的比较运算的次数。其中 SWAP(I,J) 表示 A[I]与 A[J]进行交换。
109

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

⑴ PROCEDURE SORT1(N:INTEGER) ; var I,j:integer; begin for I:=1 to n-1 do for j:=1 to n do if a[j]<a[I] then swap(I,j) end; 调用该过程的语句为 SORT1(N) ,比较运算的次数为: ⑵ PROCEDURE SORT2(I,N:INTEGER) ; var j:integer; begin if I=n then write(a[n]); else for j:=I+1 to n do if a[j]<a[I] then swap(I,j) write(a[I]); sort2(I+1,n) end; 调用该过程的语句为 SORT2(N) ,比较运算的次数为: ⑶ PROCEDURE SORT3(I,J:INTEGER) ; var m:integer; begin if I<>j then begin m:=(I+j) div 2; sort3(I,m);sort3(m+1,j); merge;{假设合并的元素分别为 P,G 个,需要比较 P+G 次}; end; end; 调用该过程的语句为 SORT3(N) ,比较运算的次数为: 四、根据题意,将以下程序填写完整(共 30 分) 1.[问题描述]求一棵树的深度与宽度; (15 分) 树可用数组 TREE:ARRAY[1..N,1..5] OF INTEGER; 其中:TREE[I,1]表示结点号;TREE[1,2]-------TREE[1,5]所属结点 1 2 5 6 7 3 9 4 10

110

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

11

12

8

13
如上图可表示为: 1 2 3 4 5 6 7 8 9 10 11 12 13 2 5 8 9 0 0 11 0 0 0 0 13 0 3 6 0 10 0 0 12 0 0 0 0 0 0 4 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

在求解过程中,用到数组 G:ARRAY[1..N,1..7] OF INTEGER; 其中:G[I,1]表示父结点,G[I,2]表示层次,G[I,3]表示本结点号,G[I,4]-----G[I,7]表示子女结点;同时,设 2 个指针 SP1(取数指针) ,SP2(存数指针) [程序清单] program exgp3; const n=13; var I,j,k,sp1,sp2,n1,n2,jmax,p:integer; tree:array[1..n,1..5] of integer; g:array[1..n,1..7] of integer; begin for I:=1 to n do begin tree[I,1]:=I; for j:=2 to 5 do read(tree[I,j]); readln; end; sp1:=1;sp2:=1;g[1,1]:=0;g[1,2]:=1;g[1,3]:=1; for I:=4 to 7 do g[1,I]:=tree[1,I-2]; while 1 do begin p:=g[sp1,2];n2:=g[sp1,3]; 2 ; j:=4; while 3 do

111

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

begin n1:=g[sp1,j]; j:=j+1; 4 g[sp2,1]:=n2;g[sp2,2]:=p;g[sp2,3]:=n1; for I:=1 to 4 do g[sp2,I+3]:=tree[n1,I+1]; end; 5 ; end; writeln(‘maxd=’,g[sp2,2]); j:=1; k:=g[1,2]; jmax:=0; for I:=2 to sp2 do if 6 then j:=j+1 else begin if j>jmax then jmax:=j; 7 ; k:=g[I,2]; end; if j>jmax then jmax:=j; writeln(‘maxl=’,jmax); end.

;

2.[问题描述] 用生成法求出 1,2,………,r 的全排列(r<=8) (15 分) [算法过程] 用数组 a:array[1..r] of integer;表示全排列; 初始化时,a[i]:=i,(i=1,2,….,r),设中间的某个排列为 a[1],a[2],….a[r], 则求出下一个排列的算法为: (1) 从后面向前找,直到找到一个顺序为止 (设下标为 j-1,则 a[j-1]<a[j]) (2) 从 a[j]……..a[r]中,找出一个 a[k]比 a[j-1]大的最小元素 (3) 将 a[j-1]与 a[k]交换 (4) 将 a[j],a[j+1],….,a[r]由小到大排序 [程序清单] program exg4; const r=7; var n,I,s,k,j,i1,t:integer; a:array[1..r] of integer; procedure print1; var ik:integer; begin for ik:=1 to r do write(a[ik]:8); writeln; end; begin
112

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

for I:=1 to r do 1 ; print1; s:=1; for I:=2 to r do s:=s*I; s:=s-1; for I:= 2 do begin j:=r; while 3 do j:=j-1; k:=j; for i1:=j+1 to r do if 4 then k:=i1; t:=a[j-1]; a[j-1]:=a[k]; a[k]:=t; for i1:=j to r-1 do for k:=i1+1 to r do if 5 then begin t:=a[i1]; a[i1]:=a[k]; a[k]:=t; end; print1; end; end.

113

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

CCF NOIP 提高组(Pascal)参考答案与评分标准
一、单项选择题(共 10 题,每题 1.5 分,共计 15 分) 1 B 2 B 3 A 4 D 5 B 6 A 7 C 8 D 9 B 10 A

二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分,多选或少选均不得分) 1 CD 2 ABCD 3 AB 4 BC 5 BC 6 ABD 7 CD 8 A 9 BCD 10 ABC

三、问题求解(共 2 题,每题 5 分,共计 10 分) 1.9 2.4 四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1.3 2.1 2 5 13 34 3.150 4.57344 五、完善程序(第 1 题,每空 2 分,第 2 题,每空 3 分,共计 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不 一定上报科学委员会审查) 1.① ans.num[i + j - 1] ② ans.num[i] := ans.num[i] mod 10; ③ ans.num[i] + a.num[i] + b.num[i]; ④ ans.num[i] mod 2 (或 ans.num[i] and 1) ⑤ inc(ans.len) (或 ans.len := ans.len + 1) ⑥ a.len < b.len

114

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

⑦ ord('0')(或 48) ⑧ times(middle, middle), target 2.① inc(num) (或 num := num + 1) ② j := i ③ solve(left, j - 1, deep + 1) ④ solve(j + 1, right, deep + 1)

NOIP2010(第十六届)初赛提高组(C 语言、PASCAL 语言)参考答案与评分标准 一、单项选择题(共 10 题,每题 1.5 分,共计 15 分) 1 2 3 4 5 6 7 8 9 10 C A A D B D C B C B 二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分,多选或少选均不得分) 1 2 3 4 5 6 7 8 9 10 ACD AD ABD AC B B D D BCD ABC 三、问题求解(共 3 题,每题 5 分,共计 15 分) 1.yyxy xx yyxy xyx xx xyx 2.12 3.18 四、阅读程序写结果(共 4 题,每题 7 分,共计 28 分) 1.16 2.1 2 3 5 6 7 9 10 14 3.4 4. 1 6 9 5 4 8 3 2 7 五、完善程序(第 1 空 2 分,其余 10 空,每空 2.5 分,共计 27 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证, 不一定上报科学委员会审查) 1.① num <= 2(或 num < 3 或 num = 2) ② go(LEFT_TO_RIGHT) ③ pos[i] = LEFT(或 LEFT = pos[i]) ④ time[i] + go(RIGHT_TO_LEFT)(或 go(RIGHT_TO_LEFT) + time[i]) ⑤ pos[i] := LEFT 本小题中, LEFT 可用 true 代替, LEFT_TO_RIGHT 可用 true 代替, RIGHT_TO_LEFT 可用 false 代替。 2.① opt[k] ② home[r] := k ③ j := i + i(或 j := 2 * i 或 j := i * 2) ④ swap(i, j)(或 swap(j, i)) ⑤ value[i] + heap[1](或 heap[1] + value[i])

115

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

⑥ i-m NOIP2009(第十五届)初赛提高组(C 语言、PASCAL 语言)参考答案与评分标准
一、单项选择题: (每题 1.5 分) 1. C 2. A 3. D 4. B 5. D 6. B 7. B 8. A 9. A 10. C 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于或等于 1。多选或少选 均不得分) 。 1. AB 2. BD 3. BC 4. C 5. BD 6. ABD 7. AC 8. ABC 9. ABCD 10. ACD 三、问题求解: (共 2 题,每空 5 分,共计 10 分) 1.432 2.35 四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. 3 2. 5850 3. 487 (杨辉三角) 4. 0.(384615)(分数变小数) 五.完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委 员会审查) 1. ① 0 ② tmp+a[i]=ans 或者 a[i]+tmp=ans 或者 ans=a[i]+tmp 等 ③ <0 ④ i ⑤ inc(tmp, a[i])或者 tmp := tmp+a[i] 2. ① now<=maxnum 或者 not(now>maxnum) ② first-second ③ (ans-1) ④ hash[first]>=ans 或者 hash[second]>=ans 或者 hash[first+delta]>=ans ⑤ ok ⑥ work(0)

NOIP2008 年(第十四届)提高组(Pascal 语言)参考答案 一、单项选择题:(每题 1.5 分) 1. C 2. A 3. B 4. C 5. B
116

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

6. D 7. D 8. E 9. B 10. C 二、 不定项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题正确答案的个数大于或等于 1。多选或少选均不得分)。 11. ABD 12. AC 13. BC 14. B 15. ABC 16. ABD 17. BCD 18. ABC 19. ACD 20. ABCD 三、问题求解:(共 2 题,每题 5 分,共计 10 分) 1. 7 2.3060 四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. 23 (信心题) 2. 1,3,2 (简单递归) 3. 132/213/231/312/321/ (全排列) 4. defghijxyzabc/hfizxjaybcccc (字符串替换) 五.完善程序 (前 6 空,每空 3 分,后 5 空,每空 2 分,共 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不 一定上报科学委员会审查) 1. ① a[left] ② a[j] < value (或 a[j] <= value) ③ a[i] > value (或 a[i] >= value) ④ a[i] := value; ⑤ i,right,n ⑥ FindKth(left, i, n) 2. ② ③ ④ ⑤ ① inc(j); (或者 j := j+1;) a[i,j] > k a[i,j] < k answerx := i; answery := j; NOIP2007 年(第十三届)提高组(Pascal 语言)参考答案 一、单项选择题 1. D 2. E 3. D 4. B 5. A 6. B 7. D 8. B 9. D 10. A 二、 不定项选择题 11. ABC 12. AD 13. ABD 14. ABD 15. BC 16. ABD 17. AB 18. CD 20. AC 三、问题求解 1.350 2.289 四、阅读程序写结果 1 129,43 2 No.1:3,6 No.2:3,6 3 2 3 5 7 11 13 17 19 23 29

19. BC

117

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

31 37 41 43 47 4 No.1: XTORSEAAMPLE No.2: AAEELMOPRSTX 五、完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不 一定上报科学委员会审查) 1 ① bound*2 ② exit ③ j:=0 ④ (j mod b-(b div 2))=0 ⑤ downto 1 2 ① x[i-2]*(m-1) ② j+x[i-1]*k ③ j+x[i-1]*k (同 2) ④ r-1 ⑤ x[i-1]+1 ⑥ backtrace(i+1,r) NOIP2006 年(第十二届)提高组(Pascal 语言)参考答案 一、单项选择题 1. E 2. C 3. D 4. E 5. C 6. E(满分) 7. C 8. B 9. A 10. B 二、 不定项选择题 11. ABC 12. AB 13. C 14. BC 15. ABCD 16. AD 17. CD 18.AB 19. BD 20. (满分,空白 0 分) 三、问题求解 1. 401 2. 9! (或 362880) 四、阅读程序写结果 1、 -13,57 (对 1 个数给 4 分,无逗号扣 1 分) 2、 6 28 496 8128 33550336 (前 2 个对 1 个数给 1 分,后 3 个对 1 个数给 2 分) 3、 11 4、6 2 5 4 3 7 9 9 7 3 4 5 2 6(数字之间无空格扣 2 分) 五、完善程序(前 5 空,每空 2 分,后 6 空,每空 3 分) 1.① j=k (或 k=j) ② p:=1 to k ③ perm2(j+1) ④ a[j]:=a[i];a[i]:=t ⑤ perm2(1) 2.① a1[i]:=a2[i];a2[i]:=t ② kz1[i]:=1;kz2[i]:=1; ③ kz1[i]:=0;kz2[j]:=0; ④ (a1[j]=a1[i])and(kz1[j]=-1) ⑤ (a2[j]=a2[kj])and(kz2[j]=-1) ⑥ cross(a1,a2,t1,t2,n) NOIP2005 年(第十一届)提高组(Pascal 语言)参考答案 一、单项选择题 1. B 2. A 3. D 4. E 5. D 6. E 7. E 8. B 9. A 10.C 二、 不定项选择题 11. CDE 12. BCE 13. BC 14. CE 15. BCE 16. B 17. ACD 18. BCDE 19. ABCDE 20. BDE 三、问题求解 1. 5 2. 11011 四、 阅读程序 1.-7452 2.3223 3.Zzzaaabbbcccy 4.31 五、 完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) 1.(1)num + len[i] div t (2)num >= k (3)eft := 0 (4)left + 1 (5)not isok(mid) (或者 isok(mid) = false)
118

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

2.(1)getcom := 1 (2)getcom(x - 1, y - 1) (3)s + t - p + 1 (4) inc(t) (或者 t := t + 1) (5)sum (6)1, len, NOIP2004 年(第十届)提高组(Pascal 语言)参考答案 一、单项选择题 1. A 2. D 3. E 4. C 5. B 6. B 7. C 8. D 9. C 10.A 二、 不定项选择题 11. BC 12. ACDE 13. BCD 14. D 15. AC 16. BE 17. ADE 18. ACD 19. ABDE 20. BCE 三、问题求解 1. 10 2.a b d f g e c 四、 阅读程序 1. 263 2.328 3. 1 4 2 1 3 3 4.-400 五、 完善程序 (前 5 空,每空 2 分,后 6 空,每空 3 分,共 28 分) 1.(1)start+m-1 (2)result>=k (或者 k<=result) (3)not find (或者 find=false) (4)2*k-i (5)m-1 2. (1) 0,-1 (2)a[x-1,y-1] (3)a[x-1,y-1] (4)d[2*i+1] (5)a[x1,y1]=orig (或者 orig=a[x1,y1]) (6)orig:=a[i,j] NOIP2003 年(第九届)提高组(Pascal 语言)参考答案 一、单项选择题 1. B 2. B 3. D 4. A 5. B 6. B 7. C 8. E 9. C 10.B 二、 不定项选择题 11. D 12. BDE 13. AD 14. AB 15. AC 16. E 17. B 18. BCD 19. D 20. BE 三、问题求解 1.11 2.4 四、 阅读程序 1. 8910 2.126 3. 1872 4. 1 1 2 4 5 1 1 3 9 (空格分隔) 五、完善程序 1.(1)2 (2)i*m (3)t=2*m (4)(t*2) mod d (5)m>0 (6)solve(m) 2. (1) m[0,k,s-1]+m[1,k,s-1] (2)h:=y (3)k-1,s+1,nth (4)i:=i+1 (5)2*i,0,nth NOIP2002 年(第八届)提高组(Pascal 语言)参考答案 一、单项选择题 1. C 2. A 3. D 4. A 5. C 6. B 7. B 8. D 9. A 10.D 11. C 12. B 13. C 14. B 15. C 16. B 17. C 18. B 19. C 20. B 二、问题求解 1. 44 2. (k-1)*nk+1 三、看程序写结果
119

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

1. RRRRWWBBBB 2. 30031 3.[五个空格] 15.00 四、完善程序 1.(1)c[n+1] (2)c[j1+1]>yu+d[j1] (3)yu:=yu+d[j1]; (4)e[j0]:=s (5)Write(e[i]:4) (场宽不同亦可) 2. (1) p and b[0]=0 (2)b[j]:=1; (3)p:=false; (4)(a[[i,j]=-1] and (b[j]=1) (5)p (要写 p=true 也可以啦) NOIP2001 年(第七届)提高组(Pascal 语言)参考答案 一、单项选择题 1. A 2. D 3. B 4. D 5. C 或 D 6. D 7. A 8. A 9. A 10.A 11. A 12. C 13. C 14. B 15. B 16. B 17. B 18. C 19. B 20. D 二、问题求解(5+7 分,两题共 12 分) 1.二叉树先序遍历的顺序为:ABCEGDFHIJ 2.能组成 2250 个不同四边形 三、阅读程序,写出程序的正确运行结果(4+7+8+9=28 分) 1.125 2.181 110 87 86 66 62 61 60 3.1348 4.153 四、根据题意,将程序补充完整 1.(1)SP:=SP+1 (2)I:=I-1 (3)DK[I,2]+L+DK[I+1,2] (4)D (5)DK[I+1,1] 2. (1) REDLN(X,Y,W) (2)R[I,J]+EET[J]>MAX (3)ET[N]:=EET[N]; (4)ET[J]-R[I,J]<MIN (5)EET[I]=ET[I] NOIP2000 年(第六届)提高组(Pascal 语言)参考答案 一、单项选择题 1. C 2. B 3. D 4. C 5. D 6. B 7. D 8. B 9. A 10.C 11. B 12. B 13. D 14. C 15. A 16. D 17. B 18. D 19. C 20. A 二、问题求解 1、5 棵。如下: a b a c c \ /\ \ / / b a c c a b \ / \ / c b b a 2、F(N)=F(N-1)+F(N-2)+F(N-3) (N>=4 ,F(1)=1 F(2)=2 F(3)=4) 三、输出结果 1.4 3 0 2 2.BBAC 四、程序填空 1.(1)A[J]:=1; (2)A[I]:=0; (3)S:=0; (4)B[S]:=1; (5)S=32 2. (1) SP1<=SP2 (2)Q[SP1,0]+1 (3)Q[SP1,J]<>0 (4)(Q[SP2,0]); (5)D[Q[I,0]]+1;
120

南宁市第三十三中学信息学奥赛辅导资料

编辑整理:黄锦安

NOIP1999 年(第五届)提高组(Pascal 语言)参考答案 一、单项选择题 1. C 2. B 3. C 4. C 5. C 6. D 7. B 8. C 9. C 10.A 11. D 12. B 13. A 14. C 15. B 16. A 17. D 18. D 19. B 20. B 二、问题求解 Ln=n(n+1)/2+1(n≥0) Zn=L2n-2n=2n2-n+1 三、阅读程序,并写出正确的程序运行结果 1.程序运行的结果:970 2. (1)调用该过程的语句为 SORT1(N) ;比较运算的次数为:n(n-1) (2)调用该过程的语句为 SORT2(N) ;比较运算的次数为:n(n-1)/2 (3)调用该过程的语句为 SORT3(N) ;比较运算的次数为:nlog2n+c 四、根据题意,将以下程序填写完善 (1)共 15 分(2+2+3+2+2+2+2=15 分) ① sp1<=sp2 ② p:=p+1 ③ g[sp1,j]<>0 ④ sp2:=sp2+1; ⑤ sp1:=sp1+1 ⑥ k=g[i,2] ⑦ j:=1; (2)共 15 分(每个点 3 分) ① a[i]:=i; ② 1 to s ③ a[j-1]>a[j] ④ (a[i1]>a[j-1]) and (a[i1]<a[k]) ⑤ a[i1]>a[k]

121


1999年—2011年信息学奥赛提高组初赛试题PASCAL(附答案_完整)1

1999年—2011年信息学奥赛提高组初赛试题PASCAL(附答案_完整)1_学科竞赛_高中教育_教育专区。历届全国青少年 信息学奥林匹克联赛 初赛试题(提高组 Pascal 语言) ...

1999年—2011年信息学奥赛提高组初赛试题PASCAL(附答案_完整)

1999年—2011年信息学奥赛提高组初赛试题PASCAL(附答案_完整)_电脑基础知识_IT/计算机_专业资料。历届全国青少年 信息学奥林匹克联赛 初赛试题(提高组 Pascal 语言)...

1999年—2012年信息学奥赛提高组初赛试题PASCAL(附答案_完整)

1999年—2012年信息学奥赛提高组初赛试题PASCAL(附答案_完整)_学科竞赛_高中教育_教育专区。第十八届全国青少年信息学奥林匹克联赛初赛(提高组 Pascal 语言试题) 竞赛...

2012年信息学奥赛提高组初赛试题PASCAL(附答案_完整)

2012年信息学奥赛提高组初赛试题PASCAL(附答案_完整)_学科竞赛_高中教育_教育专区。第十八届全国青少年信息学奥林匹克联赛初赛(提高组 Pascal 语言试题) 竞赛时间:...

1999年至2013年历年信息学奥赛提高组初赛答案

林梓雨 NOIP2012 初赛提高组参考答案(PASCAL)一、单项选择题 1 A 2 B 3 B...信息学奥赛兴趣小组 整理:林梓雨 第十七届(2011 年)信息学奥赛提高组初赛试题...

2007年及之前历年信息学奥赛提高组初赛试题(附答案)

2财富值 NOIP2010信息学奥赛初赛提... 8页 2财富值 1999年2011年历年信息...提高组 Pascal 语言 二小时完成 ) 全部试题答案均要求写在答卷纸上,写在试卷...

2010信息学奥赛初赛试题及答案

2010信息学奥赛初赛试题答案_学科竞赛_小学教育_教育专区。NOIP2010(Pascal 提高组) 一、单项选择题 1.与 16 进制数 A1.2 等值的 10 进制数是 ()A.101....

2011年第十七届信息奥林匹克初赛提高组pascal 附答案

2011年第十七届信息奥林匹克初赛提高组pascal 附答案_其它课程_高中教育_教育专区...第十七届全国青少年信息学奥林匹克联赛初赛试题 CCF NOIP2011初赛 提高组 ●● ...

信息学奥赛初赛复习题

信息学奥赛初赛复习题_学科竞赛_高中教育_教育专区。...C语言 D. Pascal语言 24、Linux是一个___操作系统...1999年—2011年信息学奥... 116页 2下载券 第...

NOIP2008信息奥赛提高组试题与答案

NOIP2008 信息奥赛提高组试题答案(Pascal 语言) 第 14 届信息学奥赛试题 单项...noip2008 初赛答案 NOIP2008 提高组(Pascal 语言)参考答案与评分标准 一、...