NOIP第二十二届全国青少年信息学奥林匹克联赛提高组初赛pascal.docx
《NOIP第二十二届全国青少年信息学奥林匹克联赛提高组初赛pascal.docx》由会员分享,可在线阅读,更多相关《NOIP第二十二届全国青少年信息学奥林匹克联赛提高组初赛pascal.docx(16页珍藏版)》请在冰豆网上搜索。
![NOIP第二十二届全国青少年信息学奥林匹克联赛提高组初赛pascal.docx](https://file1.bdocx.com/fileroot1/2022-10/28/6aa4b8bf-1e94-4136-aa09-6fde2d2d5df1/6aa4b8bf-1e94-4136-aa09-6fde2d2d5df11.gif)
NOIP第二十二届全国青少年信息学奥林匹克联赛提高组初赛pascal
第二十二届全国青少年信息学奥林匹克联赛初赛
提高组Pascal语言试题
竞赛时间:
2016年10月22日14:
30~16:
30
选手注意:
试题纸共有13页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)
1.以下不是微软公司出品的软件是()。
A.PowerpointC.ExcelB.WordD.AcrobatReader
2.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、
字母键S和字母键D的顺序来回按键,即CapsLockA、S、D、SA、CapsLockA、S、
D、S、A、CapsLockA、SD、S、A、……,屏幕上输出的第81个字符是字母()。
A.AB.SC.DD.a
3.二进制数00101100和01010101异或的结果是()。
D.00111000
A.00101000B.01111001C.01000100
4.与二进制小数0.1相等的八进进制数是()。
A.0.8B.0.4C.0.2D.0.1
5.以比较作为基本运算,在N个数中找最小数的最少运算次数为()。
A.NB.N-1C.N2D.logN
6.表达式a*(b+c)-d的后缀表达形式为()。
A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd
7.一棵二叉树如右图所示,若采用二叉树链表存储该二叉树(各个结点包括结点的数据、左孩子指针、右孩子指针)。
如果没有左孩子或者
右孩子,则对应的为空指针。
那么该链表中空指针的数目为()。
A.6B.7C.12D.14
8.G是一个非连通简单无向图,共有28条边,则该图至少有()
A.10B.9C.8D.7
9.某计算机的CPU和内存之间的地址总线宽度是32位(bit),这台计算机最多可以使用)的内存。
var
k,n:
longint;begin
k:
=4;n:
=0;
whilenbegin
inc(n);
ifnmod3<>0thencontinue;dec(k);
end;
writeln(k,',',n);
end.
C.Michael,Eve,JacobD.Micheal,Peter,Monica
13.周末小明和爸爸妈妈三个人一起想动手做三道菜。
小明负责洗菜、爸爸负责切菜、妈妈负责炒菜。
假设做每道菜的顺序都是:
先洗菜10分钟,然后切菜10分钟,最后炒菜10分
钟。
那么做一道菜需要30分钟。
注意:
两道不同的菜的相同步骤不可以同时进行。
例如第一道菜和第二道的菜不能同时洗,也不能同时切。
那么做完三道菜的最短时间需要()分
钟。
A.90B.60C.50D.40
14•假设某算法的计算时间表示为递推关系式
巩1)=1
则算法的时间复杂度为()。
A.0(?
?
B.0(")C.0("log?
?
D.0(?
?
)
15.给定含有n个不同的数的数组L=。
如果L中存在Xi(1
<...xi+1>...>xn,则称L是单峰的,并称x是L的"峰顶"。
现在已知L是单峰的,
请把a-c三行代码补全到算法中使得算法正确找到L的峰顶。
a.Search(k+1,n)
b.Search(1,k-1)
c.returnL[k]
Search(1,n)
1.k—?
n/2?
2.ifL[k]>L[k-1]andL[k]>L[k+1]
3.then
4.elseifL[k]>L[k-1]andL[k]5.then
6.else
正确的填空顺序是()。
D.b,a,c
A.c,a,bB.c,b,aC.a,b,c
、不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,多
选或少选均不得分)
1.以下属于无线通信技术的有()。
A.蓝牙
B.WiFiC.GPRSD.以太网
2.可以将单个计算机接入到计算机网络中的网络接入通讯设备有()。
A.网卡B.光驱C.鼠标D.显卡
3.下列算法中运用分治思想的有()。
D.计数排序
A.快速排序B.归并排序C.冒泡排序
4.下图表示一个果园灌溉系统,有A、B、C、
D四个阀门,每个阀门可以打开或关上,所有管道粗细相同,以下设置阀门的方法中,可以让果树浇上水的有()。
A.B打开,其他都关上
C.A打开,其他都关上
B.AB都打开,CD都关上
D.D打开,其他都关上
5.参加NOI比赛,以下能带入考场的有()。
A.钢笔B.适量的衣服C.U盘
三、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)
1.一个1X8的方格图形(不可旋转)用黑、白两种颜色填涂每个方格。
如果每个方格只
能填涂一种颜色,且不允许两个黑格相邻,共有种填涂方案。
2.某中学在安排期末考试时发现,有7个学生要参加7门课程的考试,下表列出了哪些学
生参加哪些考试(用"表示要参加相应的考试)。
最少要安排个不同的考试时间段才能避免冲突?
考试
学生1
学生2
学生3
学生4
学生5
学生6
学生7
通用技术
V
V
V
物理
V
V
V
化学
V
V
生物
V
V
V
历史
V
V
V
地理
V
V
V
政治
V-
V-
四、阅读程序写结果(共4题,每题8分,共计32分)
1.var
a:
array[1..6]ofIongint=(1,2,3,4,5,6);pi,pj,t,i:
longint;
begin
pi:
=1;pj:
=6;
whilepit:
=a[pi];a[pi]:
=a[pj];a[pj]:
=t;inc(pi);dec(pj);
end;
fori:
=1to6dowrite(a[i],',');
writeln;end.
输出:
2.var
n,i,j,k:
longint;
total_len:
array[1..100]oflongint;len:
array[1..100,1..3]oflongint;
a,b:
array[1..100,1..100]ofchar;c:
array[1..100]ofstring[100];begin
i:
=0;j:
=0;k:
=1;readln(n);
fori:
=1tondo
begin
readln(c[i]);total_len[i]:
=length(c[i]);
end;
fori:
=1tondo
begin
j:
=1;
while(c[i,j]<>':
')do
begin
a[i,k]:
=c[i,j];k:
=k+1;inc(j);
end;
len[i,1]:
=k-1;
a[i,k]:
=chr(0);
k:
=1;
forj:
=j+1tototal_len[i]do
begin
b[i,k]:
=c[i,j];
k:
=k+1;
end;
len[i,2]:
=k-1;
b[i,k]:
=chr(0);
k:
=1;
end;
fori:
=1tondo
begin
if(len[i,1]>=len[i,2])thenwrite('NO,')
else
begin
k:
=1;
forj:
=1tolen[i,2]dobegin
ifa[i,k]=b[i,j]then
k:
=k+1;
ifk>len[i,1]thenbreak;
end;
ifj=len[i,2]thenwrite('NO,')
elsewrite('YES,');
end;
end;
writeln;
end.
输入:
3
AB:
ACDEbFBkBD
AR:
ACDBrT
SARS:
SevereAtypicalRespiratorySyndrome输出:
(注:
输入各行前后均无空格)
3.functionlps(seq:
string;i,j:
longint):
longint;var
len1,len2:
longint;
begin
ifi=jthen
exit
(1);
ifi>jthen
exit(0);
if(seq[i]=seq[j])then
exit(lps(seq,i+1,j-1)+2);len1:
=lps(seq,i,j-1);len2:
=lps(seq,i+1,j);
iflen1>len2then
exit(len1)
else
exit(len2);
end;
var
n:
longint;
seq:
string;
begin
seq:
='acmerandacm';
n:
=length(seq);writeln(lps(seq,1,n));
end.
输出:
4.var
map:
array[1..100,1..100]oflongint;sum,weight,visit:
array[1..100]oflongint;
n,i,x,y,ans,ansn:
longint;
proceduredfs(node:
longint);
var
v,maxw:
longint;
begin
visit[node]:
=1;
sum[node]:
=1;
maxw:
=0;
forv:
=1tondobegin
if(map[node][v]=0)or(visit[v]<>0)thencontinue;
dfs(v);
inc(sum[node],sum[v]);
ifsum[v]>maxwthenmaxw:
=sum[v];
end;
ifn-sum[node]>maxwthen
maxw:
=n-sum[node];
weight[node]:
=maxw;
end;
begin
fillchar(map,sizeof(map),0);fillchar(sum,sizeof(sum),0);fillchar(weight,siz