nbhkdz.com冰点文库

NOIP2012初赛提高组Pascal试题


第十八届全国青少年信息学奥林匹克联赛初赛
提高组 Pascal 语言试题 竞赛时间:2012 年 10 月 13 日 14:30~16:30
选手注意:
? ? 试题纸共有 15 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写在试题纸上 的一律无效。 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
<

br />一、单项选择题(共 10 题,每题 1.5 分,共计 15 分;每题有且仅有一个正确选 项)
1. A. 2. A. 3. A. 4. 目前计算机芯片(集成电路)制造的主要原料是( 出的物质。 硅 ( B. 铜 C. 锗 D. 铝 ),它是一种可以在沙子中提炼

)是主要用于显示网页服务器或者文件系统的 HTML 文件内容,并让用户与这些 B. 浏览器 C. 电子邮件 D. 编译器

文件交互的一种软件。 资源管理器 目前个人电脑的( 显示器

)市场占有率最靠前的厂商包括 Intel、AMD 等公司。 B. CPU C. 内存 D. 鼠标

无论是 TCP/IP 模型还是 OSI 模型,都可以视为网络的分层模型,每个网络协议都会被 归入某一层中。如果用现实生活中的例子来比喻这些“层”,以下最恰当的是( A. 中国公司的经理与缅甸公司的经理交互商业文件 第4层 中国公司经理 ↑↓ 第3层 中国公司经理秘书 ↑↓ 第2层 中国公司翻译 ↑↓ 第1层 中国邮递员 ←→ 缅甸公司经理 ↑↓ 缅甸公司经理秘书 ↑↓ 缅甸公司翻译 ↑↓ 缅甸邮递员 )。

CCF NOIP2012 初赛 提高组 Pascal 1

B. 军队发布命令 第4层 司令 ↓ 第3层 军长 1 ↓ 第2层 师长 1 ↓ 第 1 层 团长 1 团长 2 团长 3 师长 2 ↓ 团长 4 团长 5 师长 3 ↓ 团长 6 团长 7 军长 2 ↓ 师长 4 ↓ 团长 8

C. 国际会议中,每个人都与他国地位对等的人直接进行会谈 第4层 第3层 第2层 第1层 英国女王 英国首相 英国外交大臣 英国驻瑞典大使 ←→ ←→ ←→ ←→ 瑞典国王 瑞典首相 瑞典外交大臣 瑞典驻英国大使

D. 体育比赛中,每一级比赛的优胜者晋级上一级比赛 第4层 奥运会 ↑ 第3层 全运会 ↑ 第2层 省运会 ↑ 第1层 市运会

5. A. C. 6. A. C. 7. A.

如果不在快速排序中引入随机化,有可能导致的后果是( 数组访问越界 排序结果错误 B. D. 陷入死循环

)。

排序时间退化为平方级 )计算机。

1946 年诞生于美国宾夕法尼亚大学的 ENIAC 属于( 电子管 集成电路 B. D. 晶体管

超大规模集成电路 )引发错误。

在程序运行过程中,如果递归调用的层数过多,会因为( 系统分配的栈空间溢出 B.

系统分配的堆空间溢出

CCF NOIP2012 初赛 提高组 Pascal 2

C. 8.

系统分配的队列空间溢出

D.

系统分配的链表空间溢出

地址总线的位数决定了 CPU 可直接寻址的内存空间大小,例如地址总线为 16 位, 其最 大的可寻址空间为 64KB。如果地址总线是 32 位,则理论上最大可寻址的内存空间为 ( A. ) 。 B. 1MB C. 1GB )。 D. WCDMA D. 4GB 128KB

9. A.

以下不属于目前 3G(第三代移动通信技术)标准的是( GSM B. TD-SCDMA C. CDMA2000

10. 仿生学的问世开辟了独特的科学技术发展道路。 人们研究生物体的结构、 功能和工作原 理, 并将这些原理移植于新兴的工程技术之中。 以下关于仿生学的叙述, 错误的是 ( A. C. 由研究蝙蝠,发明雷达 由研究海豚,发明声纳 B. D. 由研究蜘蛛网,发明因特网 由研究电鱼,发明伏特电池 ) 。

二、不定项选择题(共 10 题,每题 1.5 分,共计 15 分;每题有一个或多个正确 选项,多选或少选均不得分)
1. A. 2. 如果对于所有规模为 n 的输入,一个算法均恰好进行( 法的时间复杂度为 O(2 )。 2n+1 B. 3n C. n*2n D. 22n
n

)次运算,我们可以说该算

从顶点 A0 出发,对有向图( 是 A0, A1, A2, A3, A4。

)进行广度优先搜索(BFS)时,一种可能的遍历顺序

图A

图B

CCF NOIP2012 初赛 提高组 Pascal 3

图C 3.

图D

如果一个栈初始时为空,且当前栈中的元素从栈底到栈顶依次为 a, b, c(如右图所示),另有元素 d 已经出栈,则可能的入栈 顺序有( A. C. )。 B. D. b, a, c, d d, a, b, c )属于三原色之一。 D. )个。 D. 11 绿色 栈底 a, b, c, d a, c, b, d 栈顶 c b a

4. A. 5. A. 6.

在计算机显示器所使用的 RGB 颜色模型中,( 黄色 B. 蓝色 C.

紫色

一棵二叉树一共有 19 个节点,其叶子节点可能有( 1 B. 9 C. 10

已知带权有向图 G 上的所有权值均为正整数,记顶点 u 到顶点 v 的最短路径的权值为 d(u, v)。若 v1, v2, v3, v4, v5 是图 G 上的顶点,且它们之间两两都存在路径可达,则以下 说法正确的有( A. B. C. D. )。 v1 到 v2 的最短路径可能包含一个环 d(v1, v2) = d(v2, v1) d(v1, v3) ≤ d(v1, v2) + d(v2, v3) 如果 v1→v2→v3→v4→v5 是 v1 到 v5 的一条最短路径,那么 v2→v3→v4 是 v2 到 v4 的一 条最短路径

7.

逻辑异或(⊕)是一种二元运算,其真值表如下所示。 a False False True True A. 交换律:a ⊕ b = b ⊕ a b False True False True )。 a ⊕ b False True True False

以下关于逻辑异或的性质,正确的有(

CCF NOIP2012 初赛 提高组 Pascal 4

B. C. D. 8. A. B. 9. A.

结合律:(a ⊕ b) ⊕ c = a ⊕ (b ⊕ c) 关于逻辑与的分配律:a ⊕ (b ∧ c) = (a ⊕ b) ∧ (a ⊕ c) 关于逻辑或的分配律:a ⊕ (b ∨ c) = (a ⊕ b) ∨ (a ⊕ c) 十进制下的无限循环小数(不包括循环节内的数字均为 0 或均为 9 的平凡情况),在二 进制下有可能是( 无限不循环小数 以下( HTTP )。 C. 有限小数 D. 整数 无限循环小数(不包括循环节内的数字均为 0 或均为 1 的平凡情况)

)属于互联网上的 E-mail 服务协议。 B. FTP C. POP3 )。 D. SMTP

10. 以下关于计算复杂度的说法中,正确的有( A. B. C. D.

如果一个问题不存在多项式时间的算法,那它一定是 NP 类问题 如果一个问题不存在多项式时间的算法,那它一定不是 P 类问题 如果一个问题不存在多项式空间的算法,那它一定是 NP 类问题 如果一个问题不存在多项式空间的算法,那它一定不是 P 类问题

三、问题求解(共 2 题,每题 5 分,共计 10 分)
1. 本题中,我们约定布尔表达式只能包含 p, q, r 三个布尔变量,以及“与” (∧)、 “或” (∨)、“非”(? )三种布尔运算。如果无论 p, q, r 如何取值,两个布尔表达式的值 总是相同, 则称它们等价。 例如, (p∨q)∨r 和 p∨(q∨r)等价, p∨? p 和 q∨? q 也等价; 而 p∨q 和 p∧q 不等价。那么,两两不等价的布尔表达式最多有_________个。 2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图 1 有 5 个不同 的独立集(1 个双点集合、3 个单点集合、1 个空集),图 2 有 14 个不同的独立集。那 么,图 3 有_________个不同的独立集。

图 1 图 2

图 3

CCF NOIP2012 初赛 提高组 Pascal 5

四、阅读程序写结果(共 4 题,每题 8 分,其中第 3 题的 2 个小题各 4 分,共 计 32 分)
1. var n, i, temp, sum : integer; a : array[1..100] of integer; begin readln(n); for i := 1 to n do read(a[i]); for i := 1 to n - 1 do if a[i] > a[i + 1] then begin temp := a[i]; a[i] := a[i + 1]; a[i + 1] := temp; end; for i := n downto 2 do if a[i] < a[i - 1] then begin temp := a[i]; a[i] := a[i - 1]; a[i - 1] := temp; end; sum := 0; for i := 2 to n - 1 do inc(sum, a[i]); writeln(sum div (n - 2)); end. 输入: 8 40 70 50 70 20 40 10 30 输出:_________ 2. var n, i, ans : integer;

CCF NOIP2012 初赛 提高组 Pascal 6

function gcd(a, b : integer) : integer; begin if a mod b = 0 then gcd := b else gcd := gcd(b, a mod b); end; begin readln(n); ans := 0; for i := 1 to n do if gcd(n,i) = i then ans := ans+1; writeln(ans); end. 输入:120 输出:_________ 3. var data : array[1..20] of integer; n, i, h, ans : integer; procedure merge; begin data[h-1] := data[h-1] + data[h]; dec(h); inc(ans); end; begin readln(n); h := 1; data[h] := 1; ans := 0; for i := 2 to n do

CCF NOIP2012 初赛 提高组 Pascal 7

begin inc(h); data[h] := 1; while (h > 1) and (data[h] = data[h-1]) do merge; end; writeln(ans); end. (1) 输入:8 输出:_________(4 分) (2) 输入:2012 输出:_________(4 分) 4. var left, right, father : array[1..20] of integer; s1, s2, s3 : string; n, ans : integer; procedure check(x : integer); begin if left[x] > 0 then check(left[x]); s3 := s3 + s1[x]; if right[x] > 0 then check(right[x]); end; procedure calc(x, dep : integer); begin ans := ans + dep*(ord(s1[x])-ord('A')+1); if left[x] > 0 then calc(left[x], dep+1); if right[x] > 0 then calc(right[x], dep+1); end; procedure dfs(x, th : integer); begin if th = n+1 then

CCF NOIP2012 初赛 提高组 Pascal 8

begin s3 := ''; check(1); if s2 = s3 then begin ans := 0; calc(1, 1); writeln(ans); end; exit; end; if (left[x] = 0) and (right[x] = 0) then begin left[x] := th; father[th] := x; dfs(th, th+1); father[th] := 0; left[x] := 0; end; if right[x] = 0 then begin right[x] := th; father[th] := x; dfs(th, th+1); father[th] := 0; right[x] := 0; end; if (father[x] > 0) then dfs(father[x], th); end; begin readln(s1); readln(s2); n := length(s1); fillchar(left, sizeof(left), 0); fillchar(right, sizeof(right), 0); fillchar(father, sizeof(father), 0);

CCF NOIP2012 初赛 提高组 Pascal 9

dfs(1, 2); end. 输入: ABCDEF BCAEDF 输出:_________

五、完善程序(第 1 题第 2 空 3 分,其余每空 2.5 分,共计 28 分)
1. (排列数)输入两个正整数 n, m (1 ≤ n ≤ 20, 1 ≤ m ≤ n),在 1~n 中任取 m 个数,按字典 序从小到大输出所有这样的排列。例如 输入:3 2 输出:1 2 1 3 2 1 2 3 3 1 3 2 const SIZE = 20; var used : array[1..SIZE] of boolean; data : array[1..SIZE] of integer; n, m, i, j, k : integer; flag : boolean; begin readln(n,m); fillchar(used, sizeof(used), false); for i := 1 to m do begin data[i] := i; used[i] := true; end; flag := true; while flag do

CCF NOIP2012 初赛 提高组 Pascal 10

begin for i := 1 to m-1 do write(data[i],' '); writeln(data[m]); flag := begin ② begin used[j] := true; data[i] := flag := true; break; end; if flag then begin for k := i+1 to m do for j := 1 to begin data[k] := j; used[j] := true; break; end; ⑤ end; end; end; end. 2. (新壳栈)小 Z 设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持 压入、弹出操作。此外,其栈顶的前 c 个元素是它的壳,支持翻转操作。其中,c > 2 是一个固定的正整数,表示壳的厚度。小 Z 还希望,每次操作,无论是压入、弹出还 是翻转,都仅用与 c 无关的常数时间完成。聪明的你能帮助她编程实现“新壳栈”吗? 程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数 c,之后每行 输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不足 c 个, 应当输出相应的错误信息。 ; ④ do if used[j] = false then ③ ; ; for j := data[i]+1 to n do if used[j] = false then ① ; for i := m downto 1 do

CCF NOIP2012 初赛 提高组 Pascal 11

指令 1[空格]e 2 3 0

涵义 在栈顶压入元素 e 弹出(并输出)栈顶元素 翻转栈顶的前 c 个元素 退出 表 1:指令的涵义

输入 3 1 1 1 2 1 3 1 4 3 1 5 3 2 2 2 3 2 2 2 0 3 2 5

输出

栈中的元素 (左为栈底,右为栈顶) 输入正整数 c 1 1 2 1 2 3 1 2 3 4 1 4 3 2 1 4 3 2 5 1 4 5 2 3 1 4 5 2 1 4 5 1 4 1 4 1 空 空 空 压入元素 1 压入元素 2 压入元素 3 压入元素 4

说明

翻转栈顶的前 c 个元素 压入元素 5 翻转栈顶的前 c 个元素 弹出栈顶元素 3 弹出栈顶元素 2 弹出栈顶元素 5 由于栈中元素不足 c 个,无法翻转,故操 作失败,输出错误信息 弹出栈顶元素 4 弹出栈顶元素 1 由于栈为空,无法弹出栈顶元素,故操作 失败,输出错误信息 退出 表 2:输入输出样例

错误信息 4 1 错误信息

const NSIZE = 100000; CSIZE = 1000;

CCF NOIP2012 初赛 提高组 Pascal 12

var n, c, r, tail, head : longint; s : array[1..NSIZE] of longint; //数组 s 模拟一个栈,n 为栈的元素个数 q : array[1..CSIZE] of longint; //数组 q 模拟一个循环队列,tail 为队尾的下标,head 为队头的下标 direction, empty : boolean; function previous(k : longint) : longint; begin if direction then previous := ((k + c - 2) mod c) + 1 else previous := (k mod c) + 1; end; function next(k : longint) : longint; begin if direction then ① else next := ((k + c - 2) mod c) + 1; end; procedure push; var element : longint; begin read(element); if next(head) = tail then begin inc(n); ② end; if empty then empty := false else ; tail := next(tail);

CCF NOIP2012 初赛 提高组 Pascal 13

head := next(head); ③ end; procedure pop; begin if empty then begin writeln('Error: the stack is empty!'); exit; end; writeln( ④ ); if tail = head then empty := true else begin head := previous(head); if n > 0 then begin tail := previous(tail); ⑤ dec(n); end; end; end; procedure reverse; var temp : longint; begin if begin direction := not direction; temp := head; head := tail; tail := temp; end else writeln('Error: less than ', c, ' elements in the stack!'); ⑥ = tail then := s[n]; := element;

CCF NOIP2012 初赛 提高组 Pascal 14

end; begin readln(c); n := 0; tail := 1; head := 1; empty := true; direction := true; repeat read(r); case r of 1 : push; 2 : pop; 3 : reverse; end; until r = 0; end.

CCF NOIP2012 初赛 提高组 Pascal 15


NOIP2015提高组复赛试题Day1

NOIP2015)复赛 提高组day1 (请选手务必仔细阅读本页内容)一.题目概况 中文题目...提交源程序文件名 对于C++语言 magic.cpp 对于C语言 magic.c 对于pascal语言 ...

Noip2010提高组初赛试题及详细解析(C语言)

2.Pascal 语言、C 语言、和 C++语言都属于( A.高级语言 B.自然语言 C.解释...NOIP2012提高组初赛试题... 14页 1下载券©2014 Baidu 使用百度前必读 | 文...

2012全国信息学奥林匹克联赛提高第一天试题

全国信息学奥林匹克联赛(NOIP2012) 提高组第一天试题 NOIP2012复赛提高组第一天...提交源程序文件名对于C++语言 对于 C 语言 对于pascal语言 vigenere.cpp vigenere...

2012全国信息学奥林匹克联赛提高组第二天试题

全国信息学奥林匹克联赛(NOIP2012) 提高组第一天试题 NOIP2012复赛提高组第二天...提交源程序文件名对于C++语言 对于 C 语言 对于pascal语言 mod.cpp mod.c mod...

NOIP2011提高组_第一天_Day1试题

NOIP2012提高组day2试题 4页 5财富值 柳湖乡学区...全国信息学奥林匹克联赛(NOIP2011)复赛 提高组 day...对于 C++语言 对于 C 语言 对于 pascal 语言 g++ ...

初赛模拟试题(二)[1]

NOIP2012 初赛模拟试题(二)( 普及●● Pascal 语言 二小时完成 )●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 一. 单项选择题 (共 10 题,每...

第十一届全国青少年信息学奥林匹克联赛初赛试题(提高组C)

信息学奥林匹克联赛初赛试题(提高组C)_学科竞赛_...10000 1 ? 中国计算机学会 NOIP2005 提高 C 二、...Pascal 和 C 都是编译执行的高级语言 C. C++是...

第十届绍兴市少儿信息学奥赛--初赛试题(PASCAL)

第十届绍兴市少儿信息学奥赛--初赛试题(PASCAL)_电脑基础知识_IT/计算机_专业资料。第十届绍兴市少儿信息学竞赛 (PASCAL试卷) 第十届绍兴市少儿信息学竞赛 ...

2008年信息学奥赛初赛试题及答案

jjzwei贡献于2012-10-15 0.0分 (0人评价)暂无用户...技术大赛试题16 16页 1财富值 pascal 错误对照表 ...以上都不对 19.NOIP 竞赛推荐使用的语言环境有( )...

Pascal基础题100道合集(全)

历年NOIP(普及组提高组)试... 2页 免费 pascal-基本算法模块 21页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。...