2022年NOIP2022初赛提高组Pascal试题及答案 .pdf

上传人:C****o 文档编号:11419031 上传时间:2022-04-18 格式:PDF 页数:14 大小:351.56KB
返回 下载 相关 举报
2022年NOIP2022初赛提高组Pascal试题及答案 .pdf_第1页
第1页 / 共14页
2022年NOIP2022初赛提高组Pascal试题及答案 .pdf_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《2022年NOIP2022初赛提高组Pascal试题及答案 .pdf》由会员分享,可在线阅读,更多相关《2022年NOIP2022初赛提高组Pascal试题及答案 .pdf(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第十九届全国青少年信息学奥林匹克联赛初赛提高组 Pascal 语言试题竞赛时间: 2013 年 10 月 13 日 14:3016:30 选手注意:试题纸共有12 页,答题纸共有2 页,满分100 分。请在答题纸上作答,写在试题纸上的一律无效。不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。一、单项选择题(共15 题,每题 1.5 分,共计 22.5 分;每题有且仅有一个正确选项)1. 一个 32 位整型变量占用()个字节。A. 4 B. 8 C. 32 D. 128 2. 二进制数 11.01 在十进制下是()。A. 3.25 B. 4.125 C. 6.25 D. 1

2、1.125 3. 下面的故事与()算法有着异曲同工之妙。从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:?从前有座山,山 里有座庙,庙里有个老和尚在给小和尚讲故事:从前有座山,山里有座庙,庙里有个 老和尚给小和尚讲故事.?A. 枚举B. 递归C. 贪心D. 分治4. 1948 年, ()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。A. 冯诺伊曼( John von Neumann)B. 图灵( Alan Turing )C. 欧拉( Leonhard Euler)D. 克劳德香农(Claude Shannon)5. 已知一棵二叉树有2013 个节点,则其中至多有()个节点有

3、2 个子节点。A. 1006 B. 1007 C. 1023 D. 1024 6. 在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。右图是一个有5 个顶点、 8 条边的连通图。若要使它不再是连通图,至少要删去其中的()条边。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 14 页 - - - - - - - - - - A. 2 B. 3 C. 4 D. 5 7. 斐波那契数列的定义如下:F1 = 1, F2 = 1, Fn = Fn 1 + Fn 2 (n 3)。如果用下面的

4、函数计算斐波那契数列的第n 项,则其时间复杂度为()。funtion F(n : longint) : longint; begin if n 100 do begin sum := sum + i; inc(i); end;C.i := 1; repeat sum := sum + i; inc(i); until i 100;D.i := 1; repeat sum := sum + i; inc(i); until i = 100;2. ()的平均时间复杂度为O(n log n),其中 n 是待排序的元素个数。A. 快速排序B. 插入排序C. 冒泡排序D. 归并排序3. 以 A0 作为起

5、点,对下面的无向图进行深度优先遍历时(遍历的顺序与顶点字母的下标无关),最后一个遍历到的顶点可能是()。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 14 页 - - - - - - - - - - A. A1 B. A2 C. A3 D. A44. ()属于 NP 类问题。A. 存在一个P 类问题B. 任何一个P 类问题C. 任何一个不属于P 类的问题D. 任何一个在(输入规模的)指数时间内能够解决的问题5. CCF NOIP 复赛考试结束后,因()提出的申诉将不会被受理。A. 源程序文件

6、名大小写错误B. 源程序保存在指定文件夹以外的位置C. 输出文件的文件名错误D. 只提交了可执行文件,未提交源程序三、问题求解(共2 题,每题 5 分,共计 10 分;每题全部答对得5 分,没有部分分)1. 某系统自称使用了一种防窃听的方式验证用户密码。密码是n 个数 s1, s2, , sn,均为 0 或 1。 该系统每次随机生成n 个数 a1, a2, ,an, 均为 0 或 1,请用户回答 (s1a1 + s2a2 + + snan)除以 2 的余数。如果多次的回答总是正确,即认为掌握密码。该系统认为,即使问答的过程被泄露,也无助于破解密码因为用户并没有直接发送密码。然而,事与愿违。例如

7、,当n = 4 时,有人窃听了以下5 次问答:问答编号系统生成的n 个数掌握密码的用户的回答a1a2a3a4111001200110301100411100510000就破解出了密码s1 = ,s2 = ,s3 = ,s4 = 。2. 现有一只青蛙, 初始时在n 号荷叶上。 当它某一时刻在k 号荷叶上时, 下一时刻将等概率地随机跳到1, 2, , k 号荷叶之一上, 直至跳到1 号荷叶为止。 当 n = 2 时,平均一共跳 2 次;当 n = 3 时,平均一共跳2.5 次。则当 n = 5 时,平均一共跳次。1 2 3 4 5 精品资料 - - - 欢迎下载 - - - - - - - - -

8、 - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 14 页 - - - - - - - - - - 四、阅读程序写结果(共4 题,每题 8 分,共计 32 分)1. var n, i : integer; str : string; isPlalindrome : boolean; begin readln(str); n := Length(str); isPlalindrome := true; for i := 1 to (n div 2) do begin if (stri strn-i+1) then isPlalindrome := false;

9、end; if (isPlalindrome) then writeln(Yes) else writeln(No); end. 输入: abceecba 输出:2. var a, b, u, v, i, num : integer; begin readln(a, b, u, v); num := 0; for i := a to b do begin if (i mod u = 0) or (i mod v = 0) then inc(num); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页

10、,共 14 页 - - - - - - - - - - end; writeln(num); end. 输入: 1 1000 10 15 输出:3. const SIZE = 100; var n, ans, i, j : integer; height, num : array1.SIZE of integer; begin read(n); for i := 1 to n do begin read(heighti); numi := 1; for j := 1 to i-1 do begin if (heightj = numi) then numi := numj+1; end; en

11、d; ans := 0; for i := 1 to n do begin if (numi ans) then ans := numi; end; writeln(ans); end. 输入:8 3 2 5 11 12 7 4 10 输出:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 14 页 - - - - - - - - - - 4. const SIZE = 100; var n, m, p, count, ans, x, y, i, j : integer; a : array1.

12、SIZE, 1.SIZE of integer; procedure colour(x, y : integer); begin inc(count); axy := 1; if (x 1) and (ax-1y = 0) then colour(x-1, y); if (y 1) and (axy-1 = 0) then colour(x, y-1); if (x n) and (ax+1y = 0) then colour(x+1, y); if (y m) and (axy+1 = 0) then colour(x, y+1); end; begin fillchar(a, sizeof

13、(a), 0); readln(n, m, p); for i := 1 to p do begin read(x, y); axy := 1; end; ans := 0; for i := 1 to n do for j := 1 to m do if aij = 0 then begin count := 0; colour(i, j); if (ans count) then ans := count; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 14 页 - - - - - -

14、- - - - end; writeln(ans); end. 输入:6 5 91 42 32 43 24 14 34 55 46 4输出:五、完善程序(第1 题 15 分,第 2 题 13 分,共计 28 分)1. (序列重排)全局数组变量a 定义如下:const int SIZE = 100; int aSIZE, n; 它记录着一个长度为n 的序列 a1, a2, , an。现在需要一个函数,以整数p (1 p n)为参数,实现如下功能:将序列a 的前 p 个数与后 n p 个数对调,且不改变这p 个数(或n p 个数)之间的相对位置。例如,长度为 5 的序列 1, 2, 3, 4, 5

15、,当 p = 2 时重排结果为3, 4, 5, 1, 2。有一种朴素的算法可以实现这一需求,其时间复杂度为O(n)、 空间复杂度为O(n):procedure swap1(p : longint); var i, j : longint; b : array1.SIZE of longint; begin for i := 1 to p do b (1) := ai; / (2 分)for i := p + 1 to n do bi - p := ai; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8

16、 页,共 14 页 - - - - - - - - - - for i := 1 to n do ai := bi; end; 我们也可以用时间换空间,使用时间复杂度为O(n2)、空间复杂度为O(1)的算法:procedure swap2(p : longint); var i, j, temp : longint; begin for i := p + 1 to n do begin temp := ai; for j := i downto (4) do / (2 分)aj := aj - 1; (5) := temp; / (2 分)end; end; 事实上,还有一种更好的算法,时间复

17、杂度为O(n)、空间复杂度为O(1):procedure swap3(p : longint); var start1, end1, start2, end2, i, j, temp : longint; begin start1 := 1; end1 := p; start2 := p + 1; end2 := n; while true do begin i := start1; j := start2; while (i = end1) and (j = end2) do begin temp := ai; ai := aj; 精品资料 - - - 欢迎下载 - - - - - - -

18、- - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 14 页 - - - - - - - - - - aj := temp; inc(i); inc(j); end; if i = end1 then start1 := i else if (4) then / (3 分)begin start1 := (5) ; / (3 分)end1 := (6) ; / (3 分)start2 := j; end else break; end; end; 2. (两元序列) 试求一个整数序列中,最长的仅包含两个不同整数的连续子序列。如有多个子序列并列最长,输出任意

19、一个即可。例如,序列“1 1 2 3 2 3 2 3 3 1 1 1 3 1 ”中,有两段满足条件的最长子序列,长度均为7,分别用下划线和上划线标出。program two; const SIZE = 100; var n, i, j, cur1, cur2, count1, count2, ans_length, ans_start, ans_end : longint; /cur1, cur2 分别表示当前子序列中的两个不同整数/count1, count2 分别表示cur1, cur2 在当前子序列中出现的次数a : array1.SIZE of longint; begin readl

20、n(n); for i := 1 to n do read(ai); i := 1; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 14 页 - - - - - - - - - - j := 1; /i, j 分别表示当前子序列的首尾,并保证其中至多有两个不同整数while (j = n) and (aj = ai) do inc(j); cur1 := ai; cur2 := aj; count1 := (1) ; / ( 3 分)count2 := 1; ans_length := j

21、 - i + 1; while j 0 do begin if ai = cur1 then dec(count1) else dec(count2); inc(i); end; cur2 := aj; count2 := 1; end else begin while count1 0 do begin if ai = cur1 then (3) / (2 分)else (4) ; / (2 分)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 14 页 - - - - - - - - -

22、- inc(i); end; (5) ; / (3 分)count1 := 1; end; end; if (ans_length 1) 四、阅读程序题() Yes 判定输入的字符串是否是回文串() 133 到 1000 中是或的倍数的数的个数() 4最长上升子序列的长度() 7图中最长通路的长度五、完成程序题.(1) n+i-p (2) i+1-p (3) ai-p (4) j=end2 (5) i (6) J-1(或 start2-1 )、(1)j-1 (2) cur1 (3) dec(count1) (4) dec(count2) (5) cur1:=aj 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 14 页 - - - - - - - - - - 文档编码:KDHSIBDSUFVBSUDHSIDHSIBF-SDSD587FCDCVDCJUH 欢迎下载 精美文档欢迎下载 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 14 页 - - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com