NOIP2018普及组Pascal试题

NOIP2018普及组Pascal试题
NOIP2018普及组Pascal试题

第二十四届全国青少年信息学奥林匹克联赛初赛

普及组Pascal语言试题

竞赛时间:2018年10月13日14:30~16:30

选手注意:

●试题纸共有8页,答题纸共有2页,满分100分。请在答题纸上作答,写在

试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资

料。

一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)

1.以下哪一种设备属于输出设备:()

A. 扫描仪

B. 键盘

C. 鼠标

D. 打印机

2.下列四个不同进制的数中,与其它三项数值上不相等的是()。

A. (269)16

B. (617)10

C. (1151)8

D. (1001101011)2

3.1MB等于()。

A. 1000字节

B. 1024字节

C. 1000 X 1000字节

D. 1024 X 1024字节

4.广域网的英文缩写是()。

A. LAN

B. WAN

C. MAN

D. LNA

5.中国计算机学会于()年创办全国青少年计算机程序设计竞赛。

A. 1983

B. 1984

C. 1985

D. 1986

6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、

字母键A、字母键S、字母键D、字母键F的顺序循环按键,即CapsLock、A、

S、D、F、CapsLock、A、S、D、F、……,屏幕上输出的第81个字符是字母()。

A. A

B. S

C. D

D. a

7.设根节点深度为0,一棵深度为h的满k(k>1)叉树,即除最后一层无任何

子节点外,每一层上的所有结点都有k个子结点的树,共有()个结点。

A. (k h+1 - 1) / (k - 1)

B. k h-1

C. k h

D. (k h-1) / (k - 1)

8.以下排序算法中,不需要进行关键字比较操作的算法是()。

A. 基数排序

B. 冒泡排序

C. 堆排序

D. 直接插入排序

9.给定一个含N个不相同数字的数组,在最坏情况下,找出其中最大或最小的

数,至少需要N - 1次比较操作。则最坏情况下,在该数组中同时找最大与最小的数至少需要()次比较操作。(??表示向上取整,??表示向下取整)

A. ?3N / 2? - 2

B. ?3N / 2? - 2

C. 2N - 2

D. 2N - 4

10.下面的故事与()算法有着异曲同工之妙。

从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事……’”

A. 枚举

B. 递归

C. 贪心

D. 分治

11.由四个没有区别的点构成的简单无向连通图的个数是()。

A. 6

B. 7

C. 8

D. 9

12.设含有10个元素的集合的全部子集数为S,其中由7个元素组成的子集数为

T,则T / S的值为()。

A. 5 / 32

B. 15 / 128

C. 1 / 8

D. 21 / 128

13.10000以内,与10000互质的正整数有()个。

A. 2000

B. 4000

C. 6000

D. 8000

14.为了统计一个非负整数的二进制形式中1的个数,代码如下:

function CountBit(x:longint):longint;

var

ret : longint;

begin

ret := 0;

while x <> 0 do

begin

ret := ret + 1;

___________;

end;

CountBit := ret;

end;

则空格内要填入的语句是()。

A. x := x shr 1

B. x := x and (x - 1)

C. x := x or (x shr 1)

D. x := x shl 1

15.下图中所使用的数据结构是()。

压入A

A 压入B

B

A

弹出B

A

压入C

C

A

A. 哈希表

B. 栈

C. 队列

D. 二叉树

二、问题求解(共2题,每题5分,共计10分)

1.甲乙丙丁四人在考虑周末要不要外出郊游。

已知①如果周末下雨,并且乙不去,则甲一定不去;②如果乙去,则丁一定去;③如果丙去,则丁一定不去;④如果丁不去,而且甲不去,则丙一定不去。如果周末丙去了,则甲________(去了/没去)(1分),乙________(去了/没去)(1分),丁________(去了/没去)(1分),周末________(下雨/没下雨)(2分)。

2.从1到2018这2018个数中,共有__________个包含数字8的数。

包含数字8的数是指有某一位是“8”的数,例如“2018”与“188”。

三、阅读程序写结果(共4题,每题8分,共计32分)

1.var

st : string;

len, i : longint;

begin

read(st);

len := length(st);

for i := 1 to len do

if ('A' <= st[i]) and (st[i] <= 'Z') then

st[i] := chr(ord(st[i]) + 1);

writeln(st);

end.

输入:QuanGuoLianSai

输出:_________

2.var

x, res, i : longint;

begin

readln(x);

res := 0;

for i := 0 to x - 1 do

if (i * i mod x = 1) then

inc(res);

writeln(res);

end.

输入:15

输出:_________

3.var

n, m : longint;

function findans(n, m : longint):longint;

begin

if n = 0 then exit(m);

if m = 0 then exit(n mod 3);

exit(findans(n - 1, m) - findans(n, m - 1) + findans(n - 1, m - 1));

end;

begin

read(n, m);

writeln(findans(n, m));

end.

输入:5 6

输出:_________

4.var

n, i, j, cnt : longint;

d : array[0..99] of longint;

v : array[0..99] of boolean;

begin

read(n);

for i := 0 to n-1 do

begin

read(d[i]);

v[i] := false;

end;

cnt := 0;

for i := 0 to n-1 do

begin

if v[i] = false then

begin

j := i;

while v[j] = false do

begin

v[j] := true;

j := d[j];

end;

inc(cnt);

end;

end;

writeln(cnt);

end.

输入:10 7 1 4 3 2 5 9 8 0 6

输出:_________

四、完善程序(共2题,每题14分,共计28分)

1.(最大公约数之和)下列程序想要求解整数n的所有约数两两之间最大公约

数的和对10007求余后的值,试补全程序。(第一空2分,其余3分)

举例来说,4的所有约数是1,2,4。1和2的最大公约数为1;2和4的最大公约数为2;1和4的最大公约数为1。于是答案为1+2+1=4。

要求getDivisor函数的复杂度为O(√n),gcd函数的复杂度为O(log max(a,b))。

const

P : longint = 10007;

var

n, len, ans, i, j : longint;

a : array[0..110000] of longint;

procedure getDivisor();

var

i : longint;

begin

len := 0;

begin

if n mod i = 0 then

begin

len := len + 1;

len := len + 1;

a[len] := n div i;

end;

end;

inc(i);

end;

end;

function gcd(a, b : longint) : longint;

begin

end;

begin

read(n);

getDivisor();

ans := 0;

for i := 1 to len do

end.

2.对于一个1到n的排列P(即1到n中每一个数在P中出现了恰好一次),令q i为

第i个位置之后第一个比P i值更大的位置,如果不存在这样的位置,则q i=n+ 1。

举例来说,如果n=5且P为1 5 4 2 3,则q为2 6 6 5 6。

下列程序读入了排列P,使用双向链表求解了答案。试补全程序。(第二空2分,其余3分)

数据范围1≤n≤105。

var

n, i, x: longint;

L, R, a : array[0..100010] of longint;

begin

read(n);

for i := 1 to n do

begin

for i := 1 to n do

begin

L[i] := i - 1;

end;

for i := 1 to n do

end;

for i := 1 to n do

begin

end;

writeln; end.

noip普及组复赛模拟试题26(答案)

1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。【输入】输入文件名为reverse.in。 输入共 1 行,一个整数N。 【输出】输出文件名为reverse.out。 输出共 1 行,一个整数,表示反转后的新数。 【输入输出样例1】reverse.in reverse.out 123 321 【输入输出样例2】Reverse.in reverse.out -380 -83 【数据范围】-1,000,000,000 ≤N≤1,000,000,000。 var s3,s1,s2:string; n,i:integer; begin assign(input,'reverse.in');reset(input); assign(output,'reverse.out');rewrite(output); read(s1); n:=length(s1); if s1[1]='-' then begin s2:='-'; for i:=1 to n-1 do s1[i]:=s1[i+1]; delete(s1,n,1); end; n:=length(s1); for i:=1 to n do s3:=s3+s1[n-i+1]; i:=1; while(s3[i]='0')and(length(s3)>1) do delete(s3,1,1); write(s2+s3); close(input);close(output); end. 2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章 中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配, 即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1), 如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。 【输入】输入文件名为stat.in,2 行。 第 1 行为一个字符串,其中只含字母,表示给定单词; 第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

noip普及组复赛模拟试题18

1. 话说去年苹果们被陶陶摘下来后都很生气,于是就用最先进的克隆技术把陶陶克隆了好多份>.<然后把他们挂在树上,准备摘取。摘取的规则是,一个苹果只能摘一个陶陶,且只能在它所能摘到的高度以下(即是小于关系)的最高的陶陶,如果摘不到的话只能灰溜溜的走开了>.<给出苹果数目及每个苹果可以够到的高度和各个陶陶的高度,求苹果们都摘完后剩下多少个陶陶…… 【输入格式】第一行为两个数,分别为苹果的数量n和陶陶的数量m(n,m<=2000)以下的n行,分别为各个苹果能够到的最大高度。再接下来的m行,分别为各个陶陶的高度。高度均不高于300。 当然了,摘取的顺序按照输入的“苹果够到的最大高度”的顺序来摘。 【输出格式】输出仅有一个数,是剩下的陶陶的数量 【样例输入】5 5↙9↙10↙2↙3↙1↙6↙7↙8↙9↙10 【样例输出】3 2. 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。 任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:7 279 5 279 这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是:5 279 7 279则按输出错误处理,不能得分。【输入】输入文件scholar.in包含n+1行: 第1行为一个正整数n,表示该校参加评选的学生人数。 第2到n+1行,每行有3个用空格隔开的数字,每个数字都在0到100之间。第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1~n(恰好是输入数据的行号减1)。 所给的数据都是正确的,不必检验。 【输出】输出文件scholar.out共有5行,每行是两个用空格隔开的正整数, 依次表示前5名学生的学号和总分。 【输入输出样例1】 scholar.in scholar.out 6 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 6 265 4 264 3 258 2 244 1 237 【输入输出样例2】 scholar.in scholar.out 8 80 89 89 8 265 2 264

NOIP2017普及组初赛试题及答案

NOIP2017普及组初赛试题及答案 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) 1.在8位二进制补码中,10101011表示的数是十进制下的( )。 A. 43 B. -85 C. -43 D. -84 2.计算机存储数据的基本单位是( )。 A. bit B. Byte C. GB D. KB 3.下列协议中与电子邮件无关的是( )。 A. POP3 B. SMTP C. WTO D. IMAP 4.分辨率为800x600、16位色的位图,存储图像信息所需的空间为( )。 A.937.5KB B. 4218.75KB C.4320KB D. 2880KB 5.计算机应用的最早领域是( )。 A.数值计算 B.人工智能 C.机器人 D.过程控制 6.下列不属于面向对象程序设计语言的是( )。 A. C B. C++ C. Java D. C# 7.NOI的中文意思是( )。 A.中国信息学联赛

B.全国青少年信息学奥林匹克竞赛 C.中国青少年信息学奥林匹克竞赛 D.中国计算机协会 8. 2017年10月1日是星期日,1999年10月1日是( )。 A.星期三 B.星期日 C.星期五 D.星期二 9.甲、乙、丙三位同学选修课程,从4门课程中,甲选修2门,乙、丙各选修3门,则不同的选修方案共有( )种。 A. 36 B. 48 C. 96 D. 192 10.设G是有n个结点、m条边(n ≤m)的连通图,必须删去G的( )条边,才能使得G变成一棵树。 A.m–n+1 B. m-n C. m+n+1 D.n–m+1 11.对于给定的序列{ak},我们把(i, j)称为逆序对当且仅当i < j且ai> aj。那么 序列1, 7, 2, 3, 5, 4的逆序对数为()个。 A. 4 B. 5 C. 6 D. 7 12.表达式a * (b + c) * d的后缀形式是()。 A. abcd*+* B. abc+*d* C. a*bc+*d D. b+c*a*d 13.向一个栈顶指针为hs的链式栈中插入一个指针s指向的结点时,应执行( )。

NOIP2015普及组复赛解题报告

精心整理 NOIP2015普及组解题报告 南京师范大学附属中学树人学校CT 1.金币(coin.cpp/c/pas) 【问题描述】 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天) 放模式会一直这样延续下去:当连续N 续N+1天里,每天收到N+1枚金币。 请计算在前K 【输入格式】 输入文件名为coin.in。 输入文件只有1 【数据说明】 对于100%的数据,1≤K≤10,000。 【思路】 模拟 【时空复杂度】 O(k),O(1)

2、扫雷游戏(mine.cpp/c/pas) 【问题描述】 扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。 现在给出n行m 向上与之直接相邻的格子。 【输入格式】 输入文件名为mine.in。 接下来n行,每行m 雷个数表示非地雷格。相邻字符之间无分隔符。 【数据说明】 对于100%的数据,1≤n≤100,1≤m≤100。 【思路】 模拟 【技巧】

可将数组多开一圈,省去边界条件的判断。【时空复杂度】 O(mn),O(mn)

3.求和(sum.cpp/c/pas) 【问题描述】 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n。每个格子上都染了一种颜色color i(用[1,m]当中的一个整数表示),并且写了一个数字number i。 定义一种特殊的三元组:(x,y,z),其中x,y,z都代表纸带上格子的编号,这里的三元组要求满足以下两个条件: 1.x,y,z都是整数,x

NOIP2015普及组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2015)复赛 普及组 (请选手务必仔细阅读本页内容) 一、题目概况 中文题目名称金币扫雷游戏求和推销员 coin mine sum salesman 英文题目与子目 录名 可执行文件名coin mine sum salesman 输入文件名coin.in mine.in sum.in salesman.in 输出文件名coin.out mine.out sum.out salesman.out 每个测试点时限1秒 测试点数目10 每个测试点分值10 附加样例文件有 结果比较方式全文比较(过滤行末空格及文末回车) 题目类型传统 运行内存上限128M 二、提交源程序文件名 对于C++语言coin.cpp mine.cpp sum.cpp salesman.cpp 对于C语言coin.c mine.c sum.c salesman.c 对于Pascal语言coin.pas mine.pas sum.pas salesman.pas 四、注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm)II x2240processor,2.8GHz,内存4G,上述时限以此配置为准。 4、只提供Linux格式附加样例文件。 5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。

1.金币 (coin.cpp/c/pas) 【问题描述】 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。 请计算在前K天里,骑士一共获得了多少金币。 【输入格式】 输入文件名为coin.in。 输入文件只有1行,包含一个正整数K,表示发放金币的天数。 【输出格式】 输出文件名为coin.out。 输出文件只有1行,包含一个正整数,即骑士收到的金币数。 【输入输出样例1】 coin.in coin.out 614 见选手目录下的coin/coin1.in和coin/coin1.ans。 【输入输出样例1说明】 骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到1+2+2+3+3+3=14枚金币。 【输入输出样例2】 coin.in coin.out 100029820 见选手目录下的coin/coin2.in和coin/coin2.ans。 【数据说明】 对于100%的数据,1≤K≤10,000。

NOIP普及组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2017)复赛 普及组 (请选手务必仔细阅读本页内容) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz, 内存4G,上述时限以此配置为准。 4、只提供Linux格式附加样例文件。 5、提交的程序代码文件的放置位置请参照各省的具体要求。 6、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。

1. 成绩 (score.cpp/c/pas) 【问题描述】 牛牛最近学习了C++入门课程,这门课程的总成绩计算方法是: 总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50% 牛牛想知道,这门课程自己最终能得到多少分。 【输入格式】 输入文件名为score.in。 输入文件只有1行,包含三个非负整数A、B、C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是100分。 【输出格式】 输出文件名为score.out。 输出文件只有1行,包含一个整数,即牛牛这门课程的总成绩,满分也是100分。 见选手目录下的score/score1.in和score/score1.ans。 【输入输出样例1说明】 牛牛的作业成绩是100分,小测成绩是100分,期末考试成绩是80分,总成绩是100×20%+100×30%+80×50%=20+30+40=90。 【输入输出样例2说明】 牛牛的作业成绩是60分,小测成绩是90分,期末考试成绩是80分,总成绩是60×20%+90×30%+80×50%=12+27+40=79。 【数据说明】 对于30%的数据,A=B=0。 对于另外30%的数据,A=B=100。 对于100%的数据,0≤A、B、C≤100且A、B、C都是10的整数倍。

NOIP复赛普及组试题精编版

CCF全国信息学奥林匹克联赛(NOIP2013)复赛 普及组 (请选手务必仔细阅读本页内容) 一.题目概况 二.提交源程序文件名

三.编译命令(不包含任何优化开关) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) 64x2 Dual Core CPU 5200+, 2.71GHz,内存2G,上述时限以此配置为准。 4、只提供Linux 格式附加样例文件。 5、特别提醒:评测在NOI Linux 下进行。 1.记数问题 (count.cpp/c/pas) 【问题描述】 试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在1 到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。 【输入】 输入文件名为count.in。 输入共1 行,包含2 个整数n、x,之间用一个空格隔开。 【输出】 输出文件名为count.out。 输出共1 行,包含一个整数,表示x 出现的次数。 【输入输出样例】

【数据说明】 对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。 2.表达式求值 (expr.cpp/c/pas) 【问题描述】 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 【输入】 输入文件为expr.in。 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0 到231-1 之间的整数。输入数据保证这一行只有0~ 9、+、*这12 种字符。 【输出】 输出文件名为expr.out。 输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于4 位时,请只输出最后4 位,前导0 不输出。 【输入输出样例1】 【输入输出样例2】

NOIP2008普及组复赛试题与解题报告

NOIP 2008普及组解题报告 一、ISBN号码(isbn.pas/c/cpp) 【问题描述】 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。 你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。 【输入】 输入文件isbn.in只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。 【输出】 输出文件isbn.out共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。 【输入输出样例1】 isbn.in 0-670-82162-4 isbn.out Right 【输入输出样例2】 isbn.in

NOIP信息学奥赛普及组初赛C试题及答案较完美版

NOIP2016第二十二届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2016年10月22日14:30~16:30 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) 1.以下不是微软公司出品的软件是( )。 A.Powerpoint B.Word C.Excel D. Acrobat Reader 2.如果256种颜色用二进制编码来表示,至少需要( )位。 A.6 B.7 C.8 D.9 3.以下不属于无线通信技术的是( )。 A.蓝牙B.WiFi C.GPRS D.以太网 4.以下不是CPU生产厂商的是( )。 A.Intel B.AMD C.Microsoft D.IBM 5.以下不是存储设备的是( )。 A.光盘B.磁盘C.固态硬盘D.鼠标 6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S和字母键D的顺序循环按键,即CapsLock、A、S、D、CapsLock、A、S、D、……,屏幕上输出的第81个字符是字母( )。 A.A B.S C.D D.a 7.二进制数00101100和00010101的和是( )。 A.00101000 B.01000001 C.01000100 D.00111000 8.与二进制小数0.1相等的八进制数是( )。 A.0.8 B.0.4 C.0.2 D.0.1 9.以下是32位机器和64位机器的区别的是( )。 A.显示器不同B.硬盘大小不同 C.寻址空间不同D.输入法不同 10.以下关于字符串的判定语句中正确的是( ) A.字符串是一种特殊的线性表B.串的长度必须大于零 C.字符串不可以用数组来表示D.空格字符组成的串就是空串 11.一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素 存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i,则其左 孩子位于下标2i处、右孩子位于下标(2i+1)处),则图中所有结点的最大 下标为( ) 。 A.6 B.10 C.12 D.15 12.若有如下程序段,其中s、a、b、c均己定义为整型变量,且a、c均己赋值(c大于0)。 s=a; for (b=1;b<=c;b++) s=s+1; 则与上述程序段修改s值的功能等价的赋值语句是( )。 A. s=a+b; B. s=a+c; C. s=s+c; D. s=b+c; 13.有以下程序: #include using namespace std; int main() { int k=4,n=0; while(n

noip普及组复赛模拟试题8

1. Description 给定整数n(32位以内),判断它是否为2的方幂。是就输出 'yes',否则输出'no'。 Input 一个整数n。 Output 一个字符串 Sample Input 4 Sample Output yes 2. 问题描述: 计算机软件版本通常被用来区分某种软件在不同时间的发布。大部分软件版本号都是用“.”分隔的非负数的序列。对两个不同的版本A = a1.a2.a3…an和B = b1.b2.b3…bm,如果下面两个条件之一成立,我们认为版本A要比版本B新:1.对某个i,我们有:对所有j < i, ai > bi 和aj = bj; 2.n比m大,而且对所有i < m, ai = bi。 (ai和bi都不超过LONGINT) 在这个问题里,你要对给定的一组版本号,按照上面的定义从旧到新排序。输入文件(VERSIONS.IN): 输入文件第一行是一个整数N(N<=20),表示要排序的版本数。接下来的N行每行一个版本号。每个版本号是长度不超过50的字符串。 输出文件(VERSIONS.OUT): 将排好序的结果以每行一个版本号输出。 输入输出样例: VERSIONS.IN 4 3.0.5 1 2.4 2.4.6 VERSIONS.OUT 1 2.4 2.4.6 3.0.5 3. 输入正整数N、M,求N÷M的值。如果商的小数部分出现循环节,则输出时要求用圆括号将循环节括起来,如果商为整数,则输出为整数。例如:1÷2=0.51÷3=0.(3) 22÷5= 4.4 33÷3=11 输入:N M 输出:N÷M的值(保证小数点后不超过50位,而且未尾不能有多余的0)样例:输入:N,M=45 56 输出:0.803(571428) 4.现在是晚餐时间,而母牛们在外面分散的牧场中。 农民约翰按响了电铃,所以她们开始向谷仓走去。 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只 有一只速度最快的母牛)。 在挤奶的时候(晚餐前),每只母牛都在她自己的牧场上,一些牧场上可能没有母

noip普及组复赛答案

noip普及组复赛答案 【篇一:noip普及组复赛入门测试(答案+测试数据)】class=txt>新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以 往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。由于兔子的坏习惯,它总喜欢把比赛的总时间t小时中的k小时拿来睡觉。现在给你比赛的总时间t、兔子的睡觉时间k、兔子的速度u、乌龟的速度v,需要你求出该次比赛谁最后获胜。 输入第一行为一个整数x,表示有x组输入数据。每组数据只有一行,包括4个数t、k、u、v (1 ≤ t≤ 300,0 ≤ k ≤ t,1 ≤ u ≤ 100,1 ≤ v ≤ 100)。 对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。允许输入一组数后立即输出对应的结果。样例输入:2 1 1 2 1 6 2 6 3 样例输出: 1 -1 var v,u,t,k,n,i:integer; begin readln(n); for i:=1 to n do begin readln(t,k,u,v); if v*tu*(t-k) then writeln(1); if v*tu*(t-k) then writeln(-1); if v*t=u*(t-k) then writeln(0); end; end. 1、输入: 2 6 2 6 2 8 6 8 2 输出: -1

2、输入: 2 300 280 60 20 120 0 12 13 输出: 1 1 3、输入: 3 100 20 50 30 100 50 45 25 100 80 27 17 输出: -1 1 1 4、输入: 3 150 77 29 23 127 11 22 13 139 22 13 7 输出: 1 -1 -1 二、小球路程(文件名:xqlc.pas ) 已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,??。每次弹起的高度都是上一次高度的一半。求小球第n次反弹起的高度和球在整个过程所经过的路程(包括下落和反弹),用键盘输入n,输出反弹高度和经过路程,结果保留两位小数。 输入输出示例:输入:2 输出:25.00 225.00 var n,b:integer;s,h:real; begin readln(n); h:=100; for b:=1 to n do begin s:=s+h;

(NOIP2011)复赛普及组试题

四.运行内存限制 内存上限 128M 128M 128M 128M 全国信息学奥林匹克联赛(NOIP2011)复赛普及组 1.数字反转 (reverse.cpp/c/pas) 【问题描述】 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。 【输入】输入文件名为reverse.in。输入共1行,一个整数N。 【输出】输出文件名为reverse.out。输出共1行,一个整数,表示反转后的新数。 【输入输出样例1】 reverse.in reverse.out 123 321 【输入输出样例2】 Reverse.in reverse.out -380 -83 【数据范围】 -1,000,000,000 ≤ N ≤ 1,000,000,000。 2.统计单词数 (stat.cpp/c/pas) 【问题描述】 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和

第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。 【输入】 输入文件名为stat.in,2行。第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。 【输出】 输出文件名为stat.out。只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。 【输入输出样例1】 stat.in stat.out To to be or not to be is a question 2 0 【输入输出样例1说明】 输出结果表示给定的单词To在文章中出现两次,第一次出现的位置为0。 【输入输出样例2】 stat.in stat.out to Did the Ottoman Empire lose its power at that time -1 【输入输出样例2说明】 表示给定的单词to在文章中没有出现,输出整数-1。 【数据范围】 1 ≤单词长度≤ 10。 1 ≤文章长度≤ 1,000,000。

NOIP2012普及组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2012)复赛 普及组 (请选手务必仔细阅读本页内容) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz,内存2G,上 述时限以此配置为准。 4、特别提醒:评测在NOI Linux下进行。

1.质因数分解 (prime.cpp/c/pas) 【问题描述】 已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。 【输入】 输入文件名为prime.in。 输入只有一行,包含一个正整数n。 【输出】 输出文件名为prime.out。 输出只有一行,包含一个正整数p,即较大的那个质数。 【数据范围】 对于60%的数据,6 ≤ n ≤ 1000。 对于100%的数据,6 ≤ n ≤ 2*109。 2.寻宝 (treasure.cpp/c/pas) 【问题描述】 传说很遥远的藏宝楼顶层藏着诱人的宝藏。小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书。说明书的内容如下:藏宝楼共有N+1层,最上面一层是顶层,顶层有一个房间里面藏着宝藏。除了顶层外,藏宝楼另有N层,每层M个房间,这M个房间围成一圈并按逆时针方向依次编号为0,…,M-1。其中一些房间有通往上一层的楼梯,每层楼的楼梯设计可能不同。每个房间里有一个指示牌,指示牌上有一个数字x,表示从这个房间开始按逆时针方向选择第x个有楼梯的房间(假定该房间的编号为k),从该房间上楼,上楼后到达上一层的k号房间。比如当前房间的指示牌上写着2,则按逆时针方向开始尝试,找到第2个有楼梯的房间,从该房间上楼。如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。 寻宝说明书的最后用红色大号字体写着:“寻宝须知:帮助你找到每层上楼房间的指示牌上的数字(即每层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥”。 请帮助小明算出这个打开宝箱的密钥。 【输入】 输入文件为treasure.in。

NOIP1997普及组复赛试题

第三届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题 (初中组 竞赛用时:3小时) 1. 设有一个n*m 方格的棋盘(1≤m,n ≤100)。(30%) 求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。 例如:当n=2,m=3时 正方形的个数有8个;即边长为1的正方形有6个; 边长为2的正方形有2个。 长方形的个数有10个; 即2*1的长方形有 4 1*2的长方形有3

3*1的长方形有2个; 3*2的长方形有1个。 程序要求:输入:n和m 输出:正方形的个数与长方形的个数 如上例:输入:2 3 输出:8,10 2.将1,2,······,9共9个数排成下列形态的三角形。(30%) a b c d e f g h i 其中:a~i分别表示1,2,······,9中的一个数字,并要求同时满足下列条件: (1)a

程序要求: 根据输入的边长之和P 输出所有满足上述条件的三角形的个数以及其 中的一种方案。 3.设有一个N *M (l ≤ N ≤50, l ≤ M ≤ 50)的街道(如下图):(40%) 规定行人从A(1,1)出发,在街道上只能向东或北方向行走。 如下为N =3,M=3的街道图,从A 出发到达B 共有6条可供行走的路径: A6 A7 B (N ,M ) A3 A4 A5 南 东 5 4 3 2 1 西 1 2 3 4 5 6 7 8 A (1,1) 1.A-A1-A2-A5-B 2. A-A1-A4-A5-B 3. A-A1-A4-A7-B 4. A-A3-A4-A5-B 5. A-A3-A4-A7-B 6. A-A3-A6-A7-B

noip普及组初赛试题及答案

文字标黑部分为试题答案。 一、单项选择题(共20题,每题分,共计30分;每题有且仅有一个正确选项) 1.在8位二进制补码中,表示的数是十进制下的( )。 A. 43 B. -85 C. -43 D. -84 2.计算机存储数据的基本单位是( )。 A. bit B. Byte C. GB D. KB 3.下列协议中与电子邮件无关的是( )。 A. POP3 B. SMTP C. WTO D. IMAP 4.分辨率为800x600、16位色的位图,存储图像信息所需的空间为( )。 B. D. 2880KB 5.计算机应用的最早领域是( )。 A.数值计算 B.人工智能 C.机器人 D.过程控制 6.下列不属于面向对象程序设计语言的是( )。 A. C B. C++ C. Java D. C# 的中文意思是( )。 A.中国信息学联赛

B.全国青少年信息学奥林匹克竞赛 C.中国青少年信息学奥林匹克竞赛 D.中国计算机协会 8. 2017年10月1日是星期日,1999年10月1日是( )。 A.星期三 B.星期日 C.星期五 D.星期二 9.甲、乙、丙三位同学选修课程,从4门课程中,甲选修2门,乙、丙各选修3门,则不同的选修方案共有( )种。 A. 36 B. 48 C. 96 D. 192 10.设G是有n个结点、m条边(n ≤m)的连通图,必须删去G的( )条边,才能使得G变成一棵树。 –n+1 B. m-n C. m+n+1 –m+1 11.对于给定的序列{ak},我们把(i, j)称为逆序对当且仅当i < j且ai> aj。那么 序列1, 7, 2, 3, 5, 4的逆序对数为()个。 A. 4 B. 5 C. 6 D. 7 12.表达式a * (b + c) * d的后缀形式是()。 A. abcd*+* B. abc+*d* C. a*bc+*d D. b+c*a*d

noip普及组复赛模拟试题11

1. 机器人深海探测是一个极富挑战性的高技术科学研究项目。小雪参加了这一项目的研究工作。 潜水机器人可以携带规定有限的能量。在深海探测过程中,机器人需要消耗一定的能量,但可以在机器人之间通过接触传递能量。用多个潜水机器人接力潜水可以极大地提高潜水机器人的潜水深度。 现给定2个潜水机器人。第1个潜水机器人最多可以携带x1单位的能量,每下潜1米需要消耗能量y1单位。第2个潜水机器人最多可以携带x2单位的能量,每下潜1米需要消耗能量y2单位。开始时2个潜水机器人均处于同一海平面高度为0,并且每个机器人初始时都携带了规定最多的能量。计算用这2个机器人进行不返回的接力深海探测可下潜的最大深度。 输入:每行一个整数,依次为x1,x2,y1,y2; 输出: 这2个登山机器人可下潜的最大深度,精确到小数点后2位。 例如输入: 50 50 0.01 0.01 输出: 7500.00 2. 2035年,智能机器人在各行各业中的应用已经十分普遍了,毕竟它做事时的精度与力量比一个普通人是强多了。王涛的运输队里就有一个,是用来装卸货物的。 这天,他们的任务是要把N(2 <= N <= 50 )根废旧的条形钢材运送到钢铁厂重新冶炼。这些钢材长短不同(有些还特别的长),为了便于运输,只好把它们切割成小段。所以,他给机器人的任务是:把这些钢材切割并装上卡车。 等机器人做完这事的时候,王涛一看结果,自己都被逗笑了:机器人的逻辑就是和人不同啊——装在车上的所有小段的钢材,居然长度都是一样的(以米为单位),而且,还是所有可行方案中,切割次数最少的那种方案! 如果告诉你最开始那N根钢材的长度,你能算出机器人切割出的小段的长度么? 输入 第一行为整数N ,表示原始钢材的数量。第二行中是N个用空格分开的整数,表示每根废旧钢材的长度(以米为单位),已知这些整数不小于1,不超过400000。 输出 只有一个整数,表示机器人切割出来的每个小段的长度。 样例输入 4 4 22 8 12 样例输出 2 3. 放苹果 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 Input

NOIP2005普及组复赛试题(附题解)

noip2005普及组解题报告 陶陶摘苹果 【文件名】: apple.pas/c/cpp 【问题描述】 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 【输入文件】 输入文件apple.in包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。【输出文件】 输出文件apple.out包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。 【样例输入】 100 200 150 140 129 134 167 198 200 111

110 【样例输出】 5 分析:拿到这道题,我觉得还是比较简单的。由于数据范围都不超过200,用integer完全就足够了,具体步骤如下: 1.读入 2.循环 1 to 10 3.判断,找出最优解 4.输出 【程序清单】 program apple; var i,n,s:integer; a:array[1..10] of integer; begin assign(input,'apple.in'); reset(input); for i:=1 to 10 do read(a[i]); read(n); s:=0;

NOIP2011复赛普及组试题

全国信息学奥林匹克联赛(2011)复赛 普及组 (请选手务必仔细阅读本页内容)一.题目概况

二.提交源程序文件名 三.编译命令(不包含任何优化开关) 四.运行内存限制 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、中函数 ()的返回值类型必须是,程序正常结束时的返回值必 须是 0。 3、全国统一评测时采用的机器配置为: P4 3.0,内存 1G,上述 时限以此配置为准。 4、特别提醒:评测在下进行。 1.数字反转

() 【问题描述】 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。 【输入】 输入文件名为。输入 共 1 行,一个整数 N。 【输出】 输出文件名为。 输出共 1 行,一个整数,表示反转后的新数。 【输入输出样例 1】 【输入输出样例2】 【数据范围】 -1,000,000,000 ≤ N ≤ 1,000,000,000。

2.统计单词数 () 【问题描述】 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1), 如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。 【输入】 输入文件名为,2 行。 第 1 行为一个字符串,其中只含字母,表示给定 单词;第 2 行为一个字符串,其中只可能包含字 母和空格,表示给定的文章。【输出】输出文件 名为。只有一行,如果在文章中找到给定单词 则输出两个整数,两个整数之间用一个空格隔 开,分别是单词在文章中出现的次数和第一次出 现的位置(即在文章中第一次出现时,单词首字 母在文章中的位置,位置从 0 开始);如果单词 在文章中没有出现,则直接输出一个整数-1。 【输入输出样例 1】

noip普及组复赛模拟试题14(附答案)

解的个数(count) 给定一个正整数K,问有多少和正整数X,Y满足X>=Y且1/K=1/X+1/Y,将所有解按X降序输出。 输入 第一行一个数T,表示数据组数 以下T行,每行一个数K 输出 T部分,每部分第一行一个数K,以下一次按X降序输出所有解,个数见样例,注意=+两边都有空格。 样例输入 2 2 12 样例输出 2 1/2 = 1/6 + 1/3 1/2 = 1/4 + 1/4 8 1/12 = 1/156 + 1/13 1/12 = 1/84 + 1/14 1/12 = 1/60 + 1/15 1/12 = 1/48 + 1/16 1/12 = 1/36 + 1/18 1/12 = 1/30 + 1/20 1/12 = 1/28 + 1/21 1/12 = 1/24 + 1/24 数据规模 30% K<=20 100% K<=10000,T<=10 标程: var t,i,j,l,n,k:integer; a:array[1..20] of integer; b,c:array[1..10000] of longint; procedure shou(n:integer);

var k,s:longint; begin k:=n+1;s:=n*2;l:=0; for i:=k to s do begin if n*i mod (i-n)=0 then begin inc(l); b[l]:=(n*i) div (i-n);c[l]:=i; end; end; end; begin assign(input,'count.in'); reset(input); assign(output,'count.out'); rewrite(output); readln(t); for i:=1 to t do readln(a[i]); for k:=1 to t do begin

相关文档
最新文档