noip2010提高组PASCAL初赛试题和答案

合集下载

noip2010提高组PASCAL初赛试题和答案

noip2010提高组PASCAL初赛试题和答案

第十六届全国青少年信息学奥林匹克联赛初赛试题试题(提高组Pascal语言两小时完成)一、单项选择题(共10题,每题1.5分,共计15分。

每题有且仅有一个正确选项。

)1.与16进制数 A1.2等值的10进制数是()A.101.2B.111.4C.161.125D.177.252.一个字节(byte)由()个二进制组成。

A.8B.16C.32D.以上都有可能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. exeB. comC.dllD. 以上都不是5.如果在某个进制下等式7*7=41成立,那么在该进制下等式12*12=()也成立。

A. 100B. 144C. 164D. 1966.提出“存储程序”的计算机工作原理的是()。

A. 克劳德•香农B.戈登•摩尔C. 查尔斯•巴比奇D. 冯•诺依曼7.前缀表达式“+ 3 * 2 + 512 ” 的值是()。

A. 23B. 25C. 37D. 658.主存储器的存取速度比中央处理器(CPU)的工作速度慢的多,从而使得后者的效率受到影响。

而根据局部性原理,CPU所访问的存储单元通常都趋于一个较小的连续区域中。

于是,为了提高系统整体的执行效率,在CPU中引入了( )。

A. 寄存器B.高速缓存C. 闪存D.外存9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺序结构的数组中。

假定根结点存放在数组的1号位置上,则第k号结点的父结点如果存在的话,应当存放在数组中的()号位置。

A.2kB.2k+1C. k/2下取整D.(k+1)/210.以下竞赛活动中历史最悠久的是()。

A. NOIPB. NOIC. IOID. APIO二、不定项选择题(共10题,每题1.5分,共计15分。

NOIP初赛知识点2010(提高组)

NOIP初赛知识点2010(提高组)

◆ 计算机结构与组成原理 ◆ 基本的数学知识 (集合的运算、排列与组合)
◆ 计算机结构与组成原理
一、计算机发展及应用
1、第一台电子计算机的诞生: ENIAC
1946年,世界上第一台数字式电于计算机是由美固宾夕法尼亚大学的物理 学家约翰·莫克利(John Mauchly)和工程师普雷斯伯·埃克特 (J.hesper.Eckert)领导研制的取名为ENIAC(Elecotmnic Nurnerical Integrator And Calculator)的计算杌。
)存储器 (NOIP7) D)高速缓冲
C)可擦除可编程只读
4、下面哪个部件对于个人桌面电脑的正常运行不是必需的( )。NOIP10 A.CPU B. 图形卡(显卡) C. 光驱 D. 主板 E. 内存 5、用静电吸附墨粉后转移到纸张上,是哪种输出设备的工作方式( )。NOIP10 A.针式打印机 B. 喷墨打印机 C. 激光打印机 D. 笔式绘图仪 E. 喷墨绘 图仪 6、下列哪个(些)不是计算机的存储设备( )。NOIP10 A.文件管理器 B. 内存 C. 显卡 D. 硬盘 E. U盘 7 、下列说法中正确的有( )。NOIP10 A.CPU的基本功能就是执行指令。 B.CPU的主频是指CPU在1秒内完成的指令周期数,主频越快的CPU速度一定越快。 C.内部构造不同的CPU运行相同的机器语言程序,一定会产生不同的结果。 D.在一台计算机内部,一个内存地址编码对应唯一的一个内存单元。 E.数据总线的宽度决定了一次传递数据量的大小,是影响计算机性能的因素之 一。 8、彩色显示器所显示的五彩斑斓的色彩,是由哪三色混合而成的( )。NOIP10 A.红 B. 白 C. 蓝 D. 绿 E. 橙 9、下列哪个(些)是64位处理器( )。NOIP10 A. Intel Itanium B. Intel Pentium III C. AMD Athlon64 D. AMD Opteron E. IBM Power 5 C,C,C,ADE,ACD,ACDE

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。

程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。

因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。

1、分层读:高层入手,逐层深入,正确理解程序。

2、写注解:固化、总结、提炼已有的理解成果。

3、先模拟:根据代码顺序跟踪变量,模拟运算。

4、找规律:先模拟几次循环后,找出背后的规律。

5、看功能:从代码结构和运算结果判断程序功能。

6、猜算法:有时不知道算法,通过结构和函数猜一猜。

7、换方法:了解程序本质后,换一个熟悉的方法试试。

对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。

阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。

如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。

当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。

祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring>using namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream> using namespace std; int n;void f2(int x,int y); void f1(int x,int y) {if(x<n)f2(y,x+y);}void f2(int x,int y) {cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP提高组初赛高清试题和答案

NOIP提高组初赛高清试题和答案
第二十届全国青少年信息学奥林匹克联赛初赛 提高组参考答案
一、单项选择题(共 15 题,每题 1.5 分,共计 22.5 分)
1
2
3
Байду номын сангаас
4
5
6
7
8
B
D
D
B
C
C
B
B
9
10
11
12
13
14
15
D
A
D
C
C
B
C
二、不定项选择题(共 5 题,每题 1.5 分,共计 7.5 分;每题有一个或多个正确选项,没有部分分)
3
(4)
area:=0
area=0
3
(5) rowsum[i,last]-rowsum[i,first-1] rowsum[i][last]-rowsum[i,first-1]
3
五、完善程序(共计 28 分,以下各程序填空可能还有一些等价的写法,由各省赛区组织本省专家审定及 上机验证,可以不上报 CCF NOI 科学委员会复核)
Pascal 语言
C++语言
C 语言
分值
1. (1)
n
2.5
(2)
0
2.5
(3)
stack2[top2]:=stack1[top1]
stack2[top2]=stack1[top1]
1
2
3
4
5
AB
BCD
ABCDE
AC
BD
三、问题求解(共 2 题,每题 5 分,共计 10 分;每题全部答对得 5 分,没有部分分) 1. 102 2. 15
四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. 8 2. 20 3. 2 5 6 3 4 7 1 4. 3 6 9 1 5 10 4 11 8 2 7

NOIP2010信息学奥赛初赛普及组模拟试题(二)

NOIP2010信息学奥赛初赛普及组模拟试题(二)

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

每题有且仅有一个正确答案。

)1、.在所有由两个1和六个0组成的8位二进制整数(补码)中,最小的数是:()A.-127B.-64 C.-128 D.-652、.在一棵二叉树结点的先根序列、中根序列和后根序列中,所有叶子结点的先后顺序()A.都不相同B.完全相同C.先序和中序相同,而与后序不同D.中序和后序相同,而与先序不同3、下面有效的IP地址是:()A.202.280.130.45 B.130.192.33.45C.192.256.130.45 D.280.192.33.4564、一台具有1024*768分辨率、可显示65 536种颜色的显示器,其显示适配器(显示卡)上显示存储器容量的配置为:()A.512K B.1MB C.大于1.6MB,小于2MB D.2MB5、进行二分法查找,则线性表()A.必须顺序方式存储B.必须以链接方式存储,且数据元素已按值排好序C.必须以链接方式存储D.必须以顺序方式存储,且数据元素已按值排好序6、机器语言是用()编写的。

A.二进制码B.ASCII码C.十六进制码D.国标码7、一棵含有101个结点的完全二叉树存储在数组A[1..101]中,对1≤k≤101,若 A[k]是叶子结点,则k的最小值是:()A.51 B.50 C.49 D.488、不同的计算机,其指令系统也不相同,这主要取决于()A. 所用的操作系统B. 系统的总体结构C. 所用的CPUD. 所用的程序设计语言9、计算机主机是由CPU 与()构成的。

A.控制器B。

输入、输出设备C.运算器D.内存储器10、计算机系统总线上传送的信号有()。

A.地址信号与控制信号B.数据信号、控制信号与地址信号C.控制信号与数据信号D.数据信号与地址信号11、计算机的运算速度取决于给定的时间内,它的处理器所能处理的数据量。

深入Noip2010初赛试题和全解

深入Noip2010初赛试题和全解

作者:钟野梓序今年Noip2010初赛刚结束,网上便铺天盖地地响起了“今年初赛好容易”“分数线一定很高,怎么办……”之类的声音。

确实,自2008年起,Noip初赛难度确有逐年下降的趋势,然而这并不是出题水平降低的缘故,相反,我认为这是中国计算机协会(下称CCF)对于N oip考核目的的审视和改变所导致的必然结果。

因此,我试图通过深入解析本届Noip初赛试囗题,来探寻这种变化下面深层的规律,从而令信息学竞赛选手能更好地备战往后数届的Noip初赛,让初赛不再成为一个问题。

由于条件所限,本文仅以Pascal语言的提高组试囗题作为对象进行分析,相对于普及组而言提高组试囗题一向具有较高的难度和较好的区分度,作为研究对象是个很好的选择;至于说语言的选择,仅是因为笔者个人选择原因。

一、概况本届题目在设置方面与往年相似,由选择题(普及组仅有单项选择题,提高组则有单项选择题与不定项选择题)、问题求解、阅读程序写结果及完善程序四大部分组成;但值得注意的是,今年提高组试囗题的分值设计与往年出现了较大的不同,除了选择题仍然是30分(15分单项+15分不定项),其余部分分值均发生了变化,其中问题求解由10分上升到15分,阅读程序由32分下降到28分,完善程序由28分下降到27分。

由于是第一年实行这种分值,目前暂时无法定言背后的含义,然而或许CCF在初赛更加重视选手的数学素质,而弱化了对于阅读程序能力的考察。

众所周知,阅读程序的能力并不能非常真实地反映选手的程序能力,并且纵观近几年的阅读程序题已没有了什么新意,这也可看做是一个“求新求变”的信号。

至于试囗题整体难度方面较上年有了明显下降,其中问题求解第一题可以看做是考察选手的语文水平,而阅读程序更是没有了以往的“死算”题(即给定若干常数,在程序中设置一系列运算过程,让选手进行阅读计算类型的题目),完善程序给定的源代码风格良好,第二题竟然还加上了注释,这不能不说就是一种降低难度的举动。

全国青少年信息学奥林匹克竞赛(NOI)2010 试题

全国青少年信息学奥林匹克竞赛(NOI)2010 试题
由于能量汇集机器较大,不便移动,栋栋将它放在了一个角上,坐标正好是(0, 0)。 能量汇集机器在汇集的过程中有一定的能量损失。如果一棵植物与能量汇集机器连接而成的 线段上有 k 棵植物,则能 量的损失为 2k + 1。例如,当能量汇集机器收集坐标为(2, 4)的植 物时,由于连接线段上存在一棵植物(1, 2),会产生 3 的能量损失。注意,如果一棵植物与 能量汇集机器连接的线段上没有植物,则能量损失为 1。现在要计算总的能量损失。
【输出格式】
输出文件 plane.out 由两行组成。 第一行包含 n 个整数,表示一个可行的起飞序列,相邻两个整数用空格分隔。 输入数据保证至少存在一个可行的起飞序列。如果存在多个可行的方案,输出任 意一个即可。 第二行包含 n 个整数 t1, t2, „, tn,其中 ti 表示航班 i 可能的最小起飞序 号,相邻两个整数用空格分隔。
【运行时限】
1 秒。
【运行空限】
512M。
Copyright © 2010 中国计算机学会, 版权所有.
全国青少年奥林匹克竞赛(NOI)2010 试题
超级钢琴
【问题描述】
小 Z 是一个小有名气的钢琴家,最近 C 博士送给了小 Z 一架超级钢琴,小 Z 希望能够用这架钢琴创作出世界上最美妙的音乐。
这架超级钢琴可以弹奏出 n 个音符,编号为 1 至 n。第 i 个音符的美妙度为 Ai,其中 Ai 可正可负。
小 Z 搜集到了世博园的地图,她发现从整体上看世博园是一块非常狭长的区 域,而每一个展馆占用了其中一个几乎相同大小的方块。因此可以将整个园区看 成一个 n × m 的矩阵(n≤3),其中每一个格子为一个主题展馆。
输出文件为 piano.out。 输出文件只有一个整数,表示乐曲美妙度的最大值。

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。

程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。

因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。

1、分层读:高层入手,逐层深入,正确理解程序。

2、写注解:固化、总结、提炼已有的理解成果。

3、先模拟:根据代码顺序跟踪变量,模拟运算。

4、找规律:先模拟几次循环后,找出背后的规律。

5、看功能:从代码结构和运算结果判断程序功能。

6、猜算法:有时不知道算法,通过结构和函数猜一猜。

7、换方法:了解程序本质后,换一个熟悉的方法试试。

对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。

阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。

如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。

当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。

祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring> using namespace std; const int SIZE = 100; int main(){int n,i,sum,x,a[SIZE]; cin>>n;memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){ i++;sum+=a[i];}cout<<i<<endl; return 0;}输入:4 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream>using namespace std;int n;void f2(int x,int y);void f1(int x,int y){if(x<n)f2(y,x+y);void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++) {cin>>a>>b>>c; e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++) visited[i]=false; ans=0;for(i=1;i<=n;i++) dfs(i,0);cout<<ans<<endl; return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP2010第十六届初赛试题及答案

NOIP2010第十六届初赛试题及答案

NOIP2010第十六届初赛试题及答案(普及组Pascal)NOIP2010第十六届初赛试题及答案(普及组Pascal) PDF格式第十六届全国青少年信息学奥林匹克联赛初赛试题(普及组 Pascal 语言两小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一. 单项选择题(共20题,每题1.5分,共计30分。

每题有且仅有一个正确答案。

)1.2E+03表示()。

A.2.03B.5C.8D.20002.一个字节(byte)由()个二进制位组成。

A.8B.16C.32D.以上都有可能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.exeC.dllD.以是都不是5.如果树根算是第1层,那么一棵n层的二叉树最多有()结点。

A.2n-1B.2nC.2n+1D.2n+16.提出“存储程序”的计算机工作原理的是()。

A.克劳德·香农B.戈登·摩尔C.查尔斯·巴比奇D.冯·诺依曼7.设X、Y、Z分别代表三进制下的一位数字,若等式XY+ZX=XYX在三进制下成立,那么同样在三进制下,等式XY×ZX=()也成立。

A.YXZB.ZXYC.XYZD.XZY9.前缀表达式“+3×2+5 12”的值是()。

A.23B.25C.37D.6510.主存储器的存取速度比中央处理器(CPU)的工作速度慢得多,从而使得后者的效率受到影响。

而根据局部性原理,CPU所访问的存储单元通常都趋于聚集在一个较小的连续区域中。

于是,为了提高系统整体的执行效率,在CPU中引入了()。

A.寄存器B.高速缓存C.闪存D.外存11.一个字长为8位的整数的补码是11111001,则它的原码是()。

CSP-S(提高组)初赛模拟题及参考答案

CSP-S(提高组)初赛模拟题及参考答案

CSP-S(提高组)模拟题1.以下关于CSP-J/S的描述错误的是()分值2分A.任何人都可以自愿报名参加CSP-J/SB.CSP-J/S是CCF独立主办的认证,和任何其他机构主办的等级考试无关C.CSP-J/S和NOIP有密切关系D.CSP-J/S认证成绩优异者,可参加NOI省级选拔,省级选拔成绩优异者可参加NOI C2.-128的补码表示为()分值2分A.00000000B.00000001C.10000000D.111111113.以下不属于TCP拥塞控制算法的是()分值2分A.慢启动B.拥塞避免C.快启动D.快速重传4.以下不是基于UDP协议的是()分值2分A.DNSB.RIPC.TELNETD.TFTP5.定义如下函数add_edge和全局变量:int to[MAX],nxt[MAX],h[MAX],top;void add_edge(int u,int v){to[++top]=v,nxt[top]=h[u],h[u]=top;}如下图节点编号从1开始,按边的编号顺序,以前向星的方式存储,请问nxt[h[3]]的值为()分值2分A.6B.3C.8D.76.如下图所示,从节点1走6步走到节点5的方案数有多少种()A.5B.8C.7D.67.同时查找2n个数中的最大值和最小值,最少比较次数为()。

分值2分A.3(n-2)/2B.3n-2C.4n-2D.2n-28.设A和B是两个长为n的有序数组,现在需要将A和B合并成一个排好序的数组,请问任何以元素比较作为基本运算的归并算法最坏情况下至少要做()次比较。

分值2分A.n2B.nlog2nC.2nD.2n-19.G是一个非连通简单无向图,共有36条边,则该图至少有()个顶点分值2分A.10B.9C.8D.710.由四个不同的点构成的简单无向连通图的个数是()分值2分A.32B.35C.38D.3111.前缀表达式-+*4+2315的值为()分值2分A.16B.17C.19D.1512.2+3*(4-(5+6))/7的逆波兰表达式为()分值2分A.23456-+*7/+B.23456-+*/7+C.23456+-*7/+D.23456++*/7-13.若某算法的计算时间表示为递推关系:则该算法的复杂度为()分值2分A.O(n)B.O(nlog2n)C.O(nlog22n)D.O(nlong23n)14.若某算法的计算时间表示为递推关系:T(n)=3T(n/4)+nlong2n则该算法的复杂度为()分值2分A.O(n)B.O(nlog2n)C.O(nlog22n)D.O(nlong23n)15.现有变量a,b,c,d,取值范围均为[0,15],假设每个值出现的概率相同,则表达式的值能被3整除的概率()(为计算机中的异或运算符,结果用分数形式表达)分值2分A.3/8B.1/2C.1/4D.1/8二、阅读程序写结果(共4题,每题10分,共计40分)1.#include<iostream>using namespace std;int a,b,c;int*cal(int*p,int&q,int r){q+=r;*p+=q;return p;}int main(){cin>>a>>b>>c;c=*cal(&a,b,c);cout<<a<<""<<b<<""<<c;}1.1cal函数中参数p使用指针传递,q和r则是值传递分值2.5分对错1.2cal函数返回一个指向int类型存储空间的地址分值2.5分对错1.3当输入123时,程序输出结果为()分值2.5分A.623B.653C.656D.1261.4当输入234511时,程序的输出结果为()分值2.5分A.795611B.795679C.445679D.7956442.#include<iostream>#include<cmath>#define MAX1000#define p sqrt(3)using namespace std;int n,dp[1000][3];int h0=1,h1=3;double ans1=(2+p)/(2*p),ans2=(-2+p)/(2*p);int main(){cin>>n;dp[1][0]=dp[1][1]=dp[1][2]=1;for(int i=2,tmp;i<=n;i++){dp[i][0]=dp[i-1][1]+dp[i-1][2];dp[i][1]=dp[i-1][0]+dp[i-1][1]+dp[i-1][2];dp[i][2]=dp[i-1][0]+dp[i-1][1]+dp[i-1][2];tmp=h1;h1=2*(h1+h0);h0=tmp;}for(int i=1;i<=n;i++){ans1=ans1*(1+p);ans2=ans2*(1-p);}cout<<h1<<endl;cout<<dp[n][0]+dp[n][1]+dp[n][2]<<endl;cout<<ans1+ans2<<endl;}2.1上述程序的输出中h1和dp[n][0]+dp[n][1]+dp[n][2]的值相等分值2.5分对错2.2上述程序的输出中dp[n][0]+dp[n][1]+dp[n][2]和ans1+ans2的值相等分值2.5分对错2.3当n等于5时,第一行输出(即h1)结果为()分值2.5分A.164B.60C.448D.128当n等于10时,第三行输出(即ans1+ans2)结果为()分值2.5分A.9136B.68192C.24960D.33443.#include<iostream>#include<cstring>#define LL long longusing namespace std;LL l,r;LL f[12][10][10][2][2][2],a[20];LL Dfs(LL now,LL p,LL pp,LL_4,LL_8,LL top,LL hw){if(_4&&_8)return0;if(!now)return hw;if(!top&&f[now][p][pp][_4][_8][hw]!=-1)return f[now][p][pp][_4][_8][hw];LL Up=top?a[now]:9;LL ret(0);for(LL i=0;i<=Up;++i)ret+=Dfs(now-1,i,p,_4|(i==4),_8|(i==8),top&&(i==Up),hw|(i==pp&&i==p));if(!top)f[now][p][pp][_4][_8][hw]=ret;return ret;}inline LL Solve(LL x){LL tot(0);while(x){a[++tot]=x%10;x/=10;}if(tot!=11)return0;LL ret(0);for(LL i=1;i<=a[tot];++i)ret+=Dfs(tot-1,i,0,(i==4),(i==8),i==a[tot],0);return ret;}int main(){cin>>l>>r;memset(f,-1,sizeof(f));cout<<Solve(r)-Solve(l-1);return0;}3.1同时包含4和8的数字都不会被统计分值2.5分对错3.2相邻数位中,超过3个数位相同的数字都不会被统计分值2.5分对错3.3下列哪个是合法(会被统计)的数字()分值2.5分A.2323234823B.1015400080C.23333333333D.100100120223.4当输入1212128400012121285550时,程序输出结果为()分值2.5分A.5B.457C.455D.64.4.1上述程序实现大整数加法分值2.5分对错4.2上述程序的算法复杂度大于(其中n为max(s1.length(),s2.length()))分值2.5分对错4.3当输入111011时程序输出为()分值2.5分A.10B.4C.21D.24.4当输入10101101010时程序输出为()分值2.5分A.441B.882C.1764D.220五、完善程序(每题15分,共计30分)1.(链表反转)单向链表反转是一道经典算法问题,比如有一个链表是这样的,1->2->3->4->5,反转后成为5->4->3->2->1。

全国青少年信息学(计算机)奥林匹克竞赛提高组初赛试题及答案

全国青少年信息学(计算机)奥林匹克竞赛提高组初赛试题及答案

第三届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题(高中组)(PASCAL 语言 竞赛用时:2小时)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、基础部分:<1> WPS 是属于________类的软件;FOXBASE 是属于_______类的软件。

用FOXBASE的命令:“CREATE GZB ”,在磁盘中生成的是_______文件.<2>在MS DOS 的根目录中,有如下文件: TIME.EXE TIME.BA T 试问:C:\>TIME < 回车 > 执行的是什么命令?<3> 已知ASCII 码表中的大写字母后有6个其它字符,接着便是小写字母。

现已知:A 字母的ASCII 码为(41)16{ 表示16进制数41 },试写出如下字母用十进制表示的ASCII 码: G → ( )10 B → ( )10 T → ( )10<4> 设数组A[10..100,20..100] 以行优先的方式顺序存储,每个元素占4个字节,且已知A[10,20]的地址为1000,则A[50,90]的地址是 。

<5>一个汉字的机内码目前通常用2个字节来表示:第一个字节是区位码的区号加(160)10;第二个字节是区位码的位码加(160)10 。

已知:汉字“却”的区位码是4020,试写出机内码两个字节的二进制的代码:<6> 下图中用点表示城市,点与点之间的联系表示城市间的道路:D CA B试问:① 能否找出一条从A 城市出发,经过图中所有道路一次后又回到出发点的通路来? ② 能否从A 出发,找出去每个城市且只去一次的通路来?若能,则写出通路,否则说明理由。

<7> 为了便于处理表达式,常常将普通表达式(称为中缀表示)转换为前缀{运算符在前,如X/Y 写为/XY} 和后缀 { 运算符在后,如X/Y 写为XY/}的表达形式。

CCFNOIP2010全国青少年信息学奥林匹克联赛初赛试题

CCFNOIP2010全国青少年信息学奥林匹克联赛初赛试题

CCFNOIP2010全国青少年信息学奥林匹克联赛初赛试题第⼗六届全国青少年信息学奥林匹克联赛初赛试题试题及答案NOIP2010(Pascal提⾼组)⼀、单项选择题1.与16进制数 A1.2等值的10进制数是()A.101.2B.111.4C.161.125D.177.25解:此题考查的知识点是进制转换。

把⼀个M进制的数转换为⼗进制数的⽅法是:⽤这个M进制数的第N 位(从⼩数点出发从左往右依次为第1位,第2位,第3位……,从⼩数点出发从右往左依次为第-1位,第-2位,第-3位……)乘以M的N-1次⽅,然后累计求和。

⼗六进制中⽤A,B,C,D,E,F分别表⽰10,11,12,13,14,15.(A1.2)16=10*161+1*160+2*16-1=(161.125)10故选答案C.2.⼀个字节(byte)由()个⼆进制组成。

A.8B.16C.32D.以上都有可能解:此题要求考⽣掌握计算机存储单元⽅⾯的相关知识。

计算机中的信息都是以⽂件形式被保存和管理的;所有的信息在计算机中都要转化为⼆进制数。

计算机最基本的存储单元是字节Byte,最⼩单位是⼆进制位bit。

1个字节占8个⼆进制位;⽐字节⼤的存储单位还有KB,MB,GB,TB,它们的换算关系是:1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB.计算机有⼀个重要的性能参数:字长,指的就是CPU⼀次能处理的⼆进制信息串的长度,⼀个汉字按GB2312-80规划转化为⼆进制信息串后长16位(2个字节),⼀个英⽂字母或数字按ASCII码规则转化为⼆进制信息串后长8位(1个字节)。

故选答案A.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)解:此题考查逻辑运算⽅⾯的知识。

⽤逻辑运算符连接起来的表达式称为逻辑表达式。

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

NOIP 提高组初赛历年试题及答案阅读题篇程序写果(共 4 ,每 8 分,共 32 分)程序的最好方法并非是依次从到尾。

程序不像迷,我无法从末尾几找到答案,也不像一本引人入的籍,只需直接翻到褶最多的那几,我就能找到最精彩的片断。

因此我在程序,最好逐一考察研究每一段代,搞清楚每一段代的来去脉,理解每一段代在程序中所起的作用,而形成一个虚的程序构,并以此基来行。

1、分:高入手,逐深入,正确理解程序。

2、写注解:固化、、提已有的理解成果。

3、先模:根据代序跟踪量,模运算。

4、找律:先模几次循后,找出背后的律。

5、看功能:从代构和运算果判断程序功能。

6、猜算法:有不知道算法,通构和函数猜一猜。

7、方法:了解程序本后,一个熟悉的方法。

大多数人来,写程序是令人开心的一件事情,人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其到好的程序,就像一篇美文,令人心神怡,豁然开朗,因背后是一个人的思,甚至整个人生。

人的程序不可以巩固自己的知,启自己的思,提升自己的修养,你收,其,也是在学、在、在工作中的最重要、最常用的基本功。

如果写程序是把自己的思化代,程序就是把代化你理解的人的思。

当你程序有烈的代入感,像演一,真正入到的精神世界,面部表情也随之日丰富起来。

祝你!你通关了!之,看得多,得多,拼得多,你就考得多⋯⋯NOIP2011-1 .#include <iostream>#include <cstring>using namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i 值(中位数),而不是sum ,也不是a[x]输出: 3NOIP2011-2 .#include <iostream> using namespace std; int n;void f2(int x,int y); void f1(int x,int y){if(x<n)f2(y,x+y);}void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入: 30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出: 1 2 5 13 34NOIP2011-3 .#include <iostream>using namespace std; const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS ),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则 ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docx

(word完整版)NOIP提高组初赛历年试题及答案阅读题篇,.docxNOIP 提高组初赛历年试题及答案阅读题篇程序写果(共 4 ,每 8 分,共 32 分)程序的最好方法并非是依次从到尾。

程序不像迷,我无法从末尾几找到答案,也不像一本引人入的籍,只需直接翻到褶最多的那几,我就能找到最精彩的片断。

因此我在程序,最好逐一考察研究每一段代,搞清楚每一段代的来去脉,理解每一段代在程序中所起的作用,而形成一个虚的程序构,并以此基来行。

1、分:高入手,逐深入,正确理解程序。

2、写注解:固化、、提已有的理解成果。

3、先模:根据代序跟踪量,模运算。

4、找律:先模几次循后,找出背后的律。

5、看功能:从代构和运算果判断程序功能。

6、猜算法:有不知道算法,通构和函数猜一猜。

7、方法:了解程序本后,一个熟悉的方法。

大多数人来,写程序是令人开心的一件事情,人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其到好的程序,就像一篇美文,令人心神怡,豁然开朗,因背后是一个人的思,甚至整个人生。

人的程序不可以巩固自己的知,启自己的思,提升自己的修养,你收,其,也是在学、在、在工作中的最重要、最常用的基本功。

如果写程序是把自己的思化代,程序就是把代化你理解的人的思。

当你程序有烈的代入感,像演一,真正入到的精神世界,面部表情也随之日丰富起来。

祝你!你通关了!之,看得多,得多,拼得多,你就考得多??NOIP2011-1 .#include#includeusing namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;< p="">return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i 值(中位数),而不是sum ,也不是a[x]输出: 3NOIP2011-2 .#include using namespace std; int n;void f2(int x,int y); void f1(int x,int y){if(x<n)< p="">f2(y,x+y);}void f2(int x,int y){cout<<x<<' ';<="" p="">f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入: 30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出: 1 2 5 13 34 NOIP2011-3 .#includeusing namespace std; const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]); visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;< p="">return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS ),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。

程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。

因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。

1、分层读:高层入手,逐层深入,正确理解程序。

2、写注解:固化、总结、提炼已有的理解成果。

3、先模拟:根据代码顺序跟踪变量,模拟运算。

4、找规律:先模拟几次循环后,找出背后的规律。

5、看功能:从代码结构和运算结果判断程序功能。

6、猜算法:有时不知道算法,通过结构和函数猜一猜。

7、换方法:了解程序本质后,换一个熟悉的方法试试。

对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。

阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。

如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。

当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。

祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring> using namespace std; const int SIZE = 100; int main(){int n,i,sum,x,a[SIZE]; cin>>n;memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){ i++;sum+=a[i];}cout<<i<<endl; return 0;}输入:4 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream>using namespace std;int n;void f2(int x,int y);void f1(int x,int y){if(x<n)f2(y,x+y);void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++) {cin>>a>>b>>c; e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++) visited[i]=false; ans=0;for(i=1;i<=n;i++) dfs(i,0);cout<<ans<<endl; return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP初赛模拟试题(Pascal语言、提高组)

NOIP初赛模拟试题(Pascal语言、提高组)

NOIP初赛模拟试题(Pascal语⾔、提⾼组)NOIP初赛模拟试题 by OI Store(提⾼组 Pascal语⾔⼆⼩时完成)⼀、单项选择题(共10题,每题1.5分,共计15分。

每题有且仅有⼀个正确答案。

)1.建⽴了计算机最主要的结构原理的⼈是()。

A. 图灵B. ⽐尔·盖茨C. 冯·诺伊曼D. 克拉拉·丹E. 哥德尔2.设a、b、c是三个布尔型(boolean)的变量,则表达式(a∨?b)∧(b∨?c)∧(c∨?a)∧(a∧?a)∧(b∧?b)的值()。

A. 始终为trueB. 始终为falseC. 当且仅当c为true时为falseD. 当且仅当a与b均为true时为trueE.依赖于a、b、c三者的值3.设a、b为两个浮点(float)型变量,下⾯的表达式中最有可能为真的是()。

A. a=bB. a*a+2*a*b+b*b=(a+b)*(a+b)C. (a+b)*(a-b)+b*b-a*a<0.0001D. a/b=1/(b/a)E. sqrt(a)*sqrt(b)=sqrt(a*b)4.下⾯的数据中,在编程中⽤长整型(longint)表⽰最恰当的是()。

A. 宇宙中的原⼦数⽬B. ⼀头⼤象的体重(⽤吨表⽰)C. 姚明的⾝⾼(⽤厘⽶表⽰)D. ⼀个⼭村的准确⼈⼝数E.从现在(2006年)到2008奥运会开幕的倒计时秒数5.⼀个三叉树(即每个节点最多有三个孩⼦)中,有k个孩⼦的结点数⽬表⽰为S(k),则下列关系⼀定成⽴的是()。

A. S(0)=2*S(3)+S(2)-1B. S(0)>3*S(3)+2*S(2)-1C. S(0)<3*S(3)+2*S(2)+1D. S(0)<2*S(3)+S(2)E. S(0)<=3*S(3)+2*S(2)6.佳佳在⽹上购买了⼀个空间,建设了⼀个⽹站。

那么,他向⽹站上上传⽹页时最有可能采⽤的⽹络协议是()。

NOIP2010提高组初赛试题及详细解析

NOIP2010提高组初赛试题及详细解析

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

每题有且仅有一个正确选项。

)1.与十六进制数 A1.2等值的十进制数是()A.101.2 B.111.4 C.161.125 D.177.252.一个字节(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. exeB. comC. dllD. 以上都不是5.如果在某个进制下等式7*7=41成立,那么在该进制下等式12*12=()也成立。

A. 100B. 144C. 164D. 1966.提出“存储程序”的计算机工作原理的是()。

A. 克劳德•香农B. 戈登•摩尔C. 查尔斯•巴比奇D. 冯•诺依曼7.前缀表达式“+ 3 * 2 + 5 12 ”的值是()。

A. 23B. 25C. 37D. 6 58.主存储器的存取速度比中央处理器(CPU)的工作速度慢的多,从而使得后者的效率受到影响。

而根据局部性原理,CPU所访问的存储单元通常都趋于一个较小的连续区域中。

于是,为了提高系统整体的执行效率,在CPU中引入了( )。

A.寄存器 B.高速缓存 C.闪存 D.外存9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺序结构的数组中。

假定根结点存放在数组的1号位置上,则第k号结点的父结点如果存在的话,应当存放在数组中的()号位置。

A.2k B.2k+1 C.k/2下取整 D.(k+1)/210.以下竞赛活动中历史最悠久的是()。

初赛模拟试题(一)

初赛模拟试题(一)

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

每题有且仅有一个正确答案。

)1、建立了计算机最主要的结构原理的人是()。

A. 图灵B. 比尔·盖茨C. ·诺伊曼D. 克拉拉·丹E. 哥德尔2、设a、b、c是三个布尔型(boolean)的变量,则表达式(a∨¬b)∧(b∨¬c)∧(c∨¬a)∧(a∧¬a)∧(b∧¬b)的值()。

A. 始终为trueB. 始终为falseC. 当且仅当c为true时为falseD. 当且仅当a与b均为true时为trueE. 依赖于a、b、c三者的值3、设a、b为两个浮点(float)型变量,下面的表达式中最有可能为真的是()。

A. a=bB. a*a+2*a*b+b*b=(a+b)*(a+b)C. (a+b)*(a-b)+b*b-a*a<0.0001D. a/b=1/(b/a)E. sqrt(a)*sqrt(b)=sqrt(a*b)4、下面的数据中,在编程中用长整型(longint)表示最恰当的是()。

A. 宇宙中的原子数目B. 一头大象的体重(用吨表示)C. 明的身高(用厘米表示)D. 一个山村的准确人口数E. 从现在(2010年)到2012奥运会开幕的倒计时秒数5、一个包含n个分支结点(非叶结点)的非空满k叉树,k>=1,它的叶结点数目为:A) nk + 1 B) nk-1 C) (k+1)n-1 D. (k-1)n+16. 表达式a*(b+c)-d的后缀表达式是:A) abcd*+-B) abc+*d-C) abc*+d-D) -+*abcd7、最优前缀编码,也称Huffman编码。

这种编码组合的特点是对于较频繁使用的元素给与较短的唯一编码,以提高通讯的效率。

历届全国青少年信息学奥赛pascal语言初赛试题答案

历届全国青少年信息学奥赛pascal语言初赛试题答案

历届全国青少年信息学奥赛pascal语言初赛试题答案(6-16届)提高组[转]2011-10-14 09:24:40| 分类:信息学奥赛| 标签:|举报|字号大中小订阅第六届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题(提高组参考答案)一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,多选无分,共30分)二、问题解答(第1题的第1问2分,第2问5分,第2题7分,两题共14分)1.答:有5种不同形态的二叉树可以得到这一遍历结果;可画出的这些二叉树为:2. 用递推公式给出的某人从底层开始走完全部楼梯的走法为(用F(N))记录不同案数:F(1)=1F(2)=2F(3)=4F(N)=F(N-3)+F(N-2)+F(N-1)(N≥4)三、阅读程序,并写出程序的正确运行结果:(10分,共20分)(1)程序的运行结果是:430 2(2)程序的运行结果是:BBAC第七届全国青少年信息学(计算机)奥林匹克分区联赛初赛试题(提高组参考答案)一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题1.5分,多选无分,共30分)二、问题解答(5+7分,两题共12分)1.答:该二叉树先序遍历的顺序为:ABCEGDFHIJ2.答:用这些点为顶点,能组成2250个不同四边形三、阅读程序,并写出程序的正确运行结果:(4+7+8+9分,共28分)(1)程序的运行结果是:125(2)程序的运行结果是:181 110 87 76 66 62 61 60(3)程序的运行结果是:1348(4)程序的运行结果是:153四、根据题意,将程序补充完整(每个点3分,共30分)题一① SP:=SP+1② I:=I -1③ DK[I,2]+L+DK[I+1,2]④ D⑤ DK[I+1,1]题二① READLN(X,Y,W)② R[J,I]+EET[J]>MAX③ ET[N]:=EET[N];④ ET[J]-R[I,J]<MIN⑤ EET[I]=ET[I]第八届全国青少年信息学奥林匹克联赛初赛试题提高组一、选择题二、问题解答1、442、N0 = (K-1) Nk +1三、读程序写结果1、RRRRWWBBBB2、300313、15.00(PASCAL) 15(BASIC)四、补充程序题一:1、c[n+1]2、(yu+d[j1]<c[j1+1])3、yu:=yu+d[j1];4、e[j0]:=s;5、write(e[I]:4);题二:1、P AND (B[0]=0)2、B[J]:=1;3、P:=FALSE;4、(A[I,J]=-1)AND (B[J]=1)5、P第九届全国青少年信息学奥林匹克联赛初赛试题提高组参考答案一、单项选择题(共10题,每题1.5分,共计15分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十六届全国青少年信息学奥林匹克联赛初赛试题试题及答案NOIP2010(Pascal提高组)一、单项选择题1.与16进制数 A1.2等值的10进制数是(A )A.101.2B.111.4C.161.125D.177.252.一个字节(byte)由(A )个二进制组成。

A.8B.16C.32D.以上都有可能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下可执行文件的默认扩展名是(B )。

A.exeC.dllD.以上都不是5.如果在某个进制下等式7*7=41成立,那么在该进制下等式12*12=(C )也成立。

A.100B.144C.164D.1966.提出“存储程序”的计算机工作原理的是(B )。

A. 克劳德•香农B. 戈登•摩尔C. 查尔斯•巴比奇D. 冯•诺依曼7.前缀表达式“+ 3 * 2 + 512 ” 的值是(C )。

A.23B.25C.37D.658.主存储器的存取速度比中央处理器(CPU)的工作速度慢的多,从而使得后者的效率受到影响。

而根据局部性原理,CPU所访问的存储单元通常都趋于一个较小的连续区域中。

于是,为了提高系统整体的执行效率,在CPU中引入了(B )。

A.寄存器B.高速缓存C.闪存D.外存9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺序结构的数组中。

假定根结点存放在数组的1号位置上,则第k号结点的父结点如果存在的话,应当存放在数组中的(C )号位置。

A.2kB.2k+1C.k/2下取整D.(k+1)/210. 以下竞赛活动中历史最悠久的是(D )。

A. NOIPB. NOIC. IOID. APIO二、不定项选择题1.元素R1、R2、R3、R4、R5入栈的顺序为R1、R2、R3、R4、R5。

如果第1个出栈的是R3,那么第5个出栈的可能是(AB )。

A. R1B. R2C.R4D.R52. Pascal语言,C语言和C++语言都属于(AD )。

A. 高级语言B. 自然语言C. 解释性语言D. 编译性语言3. 原地排序是指在排序过程中(除了存储待排序元素以外的)辅助空间的大小与数据规模无关的排序算法。

以下属于原地排序的有(AC )。

A. 冒泡排序B. 插入排序C. 基数排序D. 选择排序4. 在整数的补码表示法中,以下说法正确的是()。

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

A.0 B. 2 C. 4 D. 66. 在下列HTML语句中,可以正确产生一个指向NOI官方网站的超链接的是(A )。

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 )。

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;10. 今年(2010年)发生的事件有(CD )。

A.惠普实验室研究员Vinay Deolalikar 自称证明了P≠NPB.英特尔公司收购计算机安全软件公司迈克菲(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.constsize = 10;vari, j, cnt, n, m : integer;data : array[1..size] of integer;beginreadln(n, m);for i := 1 to n doread(data[i]);for i := 1 to n dobegincnt := 0;for j := 1 to n doif (data[i] < data[j]) or ((data[j] = data[i]) and (j < i))then inc(cnt);if cnt = mthen writeln(data[i]);end;end.输入5 296 -8 0 16 87输出:__________2.constsize = 100;varna, nb, i, j, k : integer;a, b : array[1..size] of integer;beginreadln(na);for i := 1 to na doread(a[i]);readln(nb);for i := 1 to nb doread(b[i]);i := 1;j := 1;while (i <= na) and (j <= nb) do beginif a[i] <= b[j] thenbeginwrite(a[i],' ');inc(i);endelse beginwrite(b[j], ' ');inc(j);end;end;if i <= na thenfor k := i to na dowrite(a[k], ' ');if j <= nb thenfor k := j to nb dowrite(b[k], ' ');end.输入51 3 5 7 942 6 10 14输出:__________3.constnum = 5;varn: integer;function r(n : integer) : integer; vari : integer;beginif n <= num thenbeginr := n;exit;end;for i :=1 to num doif r(n-i) < 0 thenbeginr:=i;exit;end;r:=-1;end;beginreadln(n);writeln(r(n));end.输入 16输出:__________4.constsize=100;varn,m,x,y,i :integer;r: array[1.. size] of integer;map : array[1..size, 1..size] of boolean; found : boolean;function successful : boolean;vari : integer;beginfor i :=1 to n doif not map[r[i]][r[i mod n + 1]]then beginsuccessful := false;exit;end;successful :=true;end;procedure swap(var a, b : integer);vart : integer;begint := a;a := b;b := t;end;procedure perm(left, right : integer);vari : integer;beginif foundthen exit;if left > rightthen beginif successfulthen beginfor i := 1 to n dowriteln(r[i], ' ');found := true;end;exit;end;for i:= left to right dobeginswap(r[left], r[i]);perm(left + 1, right);swap(r[left], r[i]);end;end;beginreadln(n, m);fillchar(map, sizeof(map), false); for i := 1 to m dobeginreadln(x, y);map[x][y] := true;map[y][x] := true;end;for i := 1 to n dor[i] := i;found := false;perm(1, n);if not foundthen writeln('No soloution'); end.输入:9 121 22 33 44 55 66 11 72 73 84 85 96 9输出:__________五、完善程序1.(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入N(2<=N<1000)和这N个人单独过桥需要的时间,请计算总共最少需要多少时间,他们才能全部到达河左岸.例如,有3个人甲、乙、丙,他们单独过桥的时间分别为1 2 4,则总共最少需要的时间为7.具体方法是:甲乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲,丙在一起过桥到河的左岸,总时间为2+1+4=7.constSIZE = 100;INFINITY = 10000;LEFT = true;RIGHT = false;LEFT_TO_RIGHT = true;RIGHT_TO_LEFT = false;varn, i : integer;time : array[1..Size] of integer;pos :array[1..Size] of Boolean;function max(a, b :integer) : integer;beginif a > b thenmax := aelsemax := b;end;function go(stage : boolean) : integer;vari, j, num, tmp, ans : integer;beginif (stage = RIGHT_TO_LEFT)then beginnum := 0;ans :=0;for i := 1 to n doif pos[i] = Rignt thenbegininc(num);if time[i] > ans thenans := time[i];end;if __________ thenbegingo := ans;exit;end;ans := INFINITY;for i := 1 to n – 1 doif pos[i] = RIGHT thenfor j := i+1 to n doif pos[j] = RIGHT thenbeginpos[i] := LEFT;pos[j] := LEFT;tmp := max(time[i], time[j]) + _______; if tmp < ans thenans := tmp;pos[i] := RIGHT;pos[j] := RIGHT;end;go := ans;endelse if (stage = LEFT_TO_RIGHT)then beginans := INFINITY;for i := 1 to n doif _______ thenbeginpos[i] := RIGHT;tmp := ________;if tmp < ans thenans := tmp;_________;end;go := ans;endelse go := 0;end;beginreadln(n);for i := 1 to n dobeginread(time[i]);pos[i] := RIGHT;end;writeln(go(RIGHT_TO_LEFT));end.NOIP2010提高组(Pascal语言)参考答案与评分标准。

相关文档
最新文档