NOIP(2014)第二十届全国青少年信息学奥林匹克联赛初赛试题及答案(提高组试题及答案PASCAL)

NOIP(2014)第二十届全国青少年信息学奥林匹克联赛初赛试题及答案(提高组试题及答案PASCAL)
NOIP(2014)第二十届全国青少年信息学奥林匹克联赛初赛试题及答案(提高组试题及答案PASCAL)

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

提高组Pascal语言试题

竞赛时间:2014年10月12日14:30~16:30

选手注意:

● 试题纸共有10页,答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸上的一律无效。

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

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

1.以下哪个是面向对象的高级语言()。

A. 汇编语言

B. C++

C. FORTRAN

D. Basic

2.1TB代表的字节数量是()。

A. 2的10次方

B. 2的20次方

C. 2的30次方

D. 2的40次方

3. 二进制数00100100和00010101的和是()。

A. 00101000

B. 001010100

C. 01000101

D. 00111001

4. TCP协议属于哪一层协议()。

A. 应用层

B. 传输层

C. 网络层

D. 数据链路层

5. 下列几个32位IP地址中,书写错误的是().

A. 162.105.130.27

B. 192.168.0.1

C. 256.256.129.1

D. 10.0.0.1

6. 在无向图中,所有顶点的度数之和是边数的()倍。

A. 0.5

B. 1

C. 2

D. 4

7. 对长度为n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为()。

A. n/2

B. (n+1)/2

C. (n-1)/2

D. n/4

8. 编译器的主要功能是( )。

A. 将一种高级语言翻译成另一种高级语言

B. 将源程序翻译成指令

C. 将低级语言翻译成高级语言

D. 将源程序重新组合

9. 二进制数111.101所对应的十进制数是( )。 A. 5.625

B. 5.5

C 6.125

D. 7.625

10. 若有变量var a:integer ;x ,y:real ;,且a:=7,x:=2.5,y:=4.7,则表达式x + a mod 3 * trunc(x + y) mod 2 div 4的值大约是( )。 A.2.500000 B.2.750000 C.3.500000 D.0.000000

11. 有以下结构体说明和变量定义,如图所示,指针p 、q 、r 分别指向一个链表中的三个连续结点。 type

ptr=^node; node=record

data:integer; next:ptr; end; var

p,q,r:ptr;

现要将q 和r 所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是( )。

A. q^.next:=r^.next; p^.next:=r; r^.next:=q;

B. p^.next:=r; q^.next:=r^.next; r^.next:=q;

C. q^.next:=r^.next; r^.next:=q; p^.next:=r;

D. r^.next:=q; q^.next:=r^.next; p^.next:=r;

12. 同时查找2n 个数中的最大值和最小值,最少比较次数为( )。 A. 3(n-2)/2

B. 4n-2

C. 3n-2

D. 2n-2

13. 设G 是有6个结点的完全图要得到一棵生成树,需要从G 中删去( )条边。 A. 6 B. 9

C. 10

D. 15

data next data next data next

14. 以下时间复杂度不是O(n2)的排序方法是()。

A. 插入排序

B. 归并排序

C. 冒泡排序

D. 选择排序

15. 以下程序段实现了找第二小元素的算法。输入是n个不等的数构成的数组S,输出S中第二小的数SecondMin。在最坏情况下,该算法需要做()次比较。

if S[1]

begin

FirstMin:=S[1];

SecondMin:=S[2];

end

else

begin

FirstMin:=S[2];

SecondMin:=S[1];

end;

for i:=3 to n dO

if S[i]

if S[i]

begin

SecondMin:=FirstMin;

FirstMin:=S[i];

end

else

SecondMin:=S[i];

A. 2n

B. n-1

C. 2n-3

D. 2n-2

二、不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,多选或少选均不得分)

1. 若逻辑变量A、C为真,B、D为假,以下逻辑运算表达式为真的有()。

A. (B∨C∨D)∨D∧A

B. ((┐A∧B)∨C)∧┐B

C. (A∧B)∨(C∧D)∨┐A)

D. A∧(D∨┐C)∧B

2. 下列()软件属于操作系统软件。

A. Microsoft Word

B. Windows XP

C. Android

D. MacOSX

E. Oracle

3. 在NOI比赛中,对于程序设计题,选手提交的答案不得包含下列哪些内容()。

A. 试图访问网络

B. 打开或创建题目规定的输入/输出文件之外的其他文件

C. 运行其他程序

D. 改变文件系统的访问权限

E. 读写文件系统的管理信息

4. 以下哪些结构可以用来存储图()。

A. 邻接矩阵

B. 栈

C. 邻接表

D.二叉树

5. 下列各无符号十进制整数中,能用八位二进制表示的数有()。

A. 296

B. 133

C. 256

D. 199

三、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)

1. 由数字1,1,2,4,8,8所组成的不同的四位数的个数是________。

2. 如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是________。

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

1. var

a, b, i, tot, c1, c2:integer;

begin

readln(a,b);

tot:=0;

for i:=a to b do

begin

c1:=i div 10;

c2:=i mod 10;

if (c1+c2) mod 3=0 then

inc(tot);

end;

writeln(tot);

end.

输入:7 31

输出:________

2. var

n, m:integer;

function fun(n, minNum, maxNum : integer): integer; var tot, i:integer;

begin

if n=0 then

exit(1);

tot:=0;

for i:=minNum to maxNum do

tot:=tot + fun(n-1, i+1, maxNum);

exit(tot);

end;

begin

readln(n, m);

writeln(fun(m, 1, n));

end.

输入:6 3

输出:________

3. const

SIZE=100;

var

dict:array[1..SIZE]of string;

rank,ind:array[1..SIZE]of integer;

i, j, n, tmp:integer;

begin

readln(n);

for i:=1 to n do

begin

rank[i]:=i;

ind[i]:=i;

readln(dict[i]);

end;

for i:=1 to n-1 do

for j:=1 to n-i do

if dict[ind[j]]>dict[ind[j+1]] then begin

tmp:=ind[j];

ind[j]:=ind[j+1];

ind[j+1]:=tmp;

end;

for i:=1 to n do

rank[ind[i]]:=i;

for i:=1 to n do

write(rank[i],' ');

writeln;

end.

输入:

7

aaa

aba

bbb

aaa

aaa

ccc

aa

输出:________

4. const

SIZE=100;

var

alive:array[1..SIZE] of integer;

n, m, num, i, j:integer;

function next(num:integer):integer;

begin

repeat

inc(num);

if num>n then

num:=1;

until alive[num]<>0;

exit(num);

end;

begin

read(n, m);

for i:=1 to n do

alive[i]:=1;

num:=1;

for i:=1 to n do

begin

for j:=1 to m-1 do

num:=next(num);

write(num, ' ');

alive[num]:=0;

if i

num:=next(num);

end;

writeln;

end.

输入:11 3

输出:________

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

1. (双栈模拟数组)只使用两个栈结构stack1和stack2,模拟对数组的随机读取。作为栈结构,stack1和stack2只能访问栈顶(最后一个有效元素)。栈顶指针top1和top2均指向栈顶元素的下一个位置。

输入第一行包含两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。第二行包含n个整数,依次给出数组各项(数组下标从0到n-1)。第三行包含m个整数,需要访问的数组F标。对于每次访问,输出对应的数组元素。(前两空每空2.5分,其余每空3分,共14分)

const

SIZE=100;

var

stack1, stack2:array[0..SIZE]of integer; top1, top2:integer;

n, m, i, j:integer;

procedure clearStack();

var

i:integer;

begin

for i:=top1 to SIZE do

stack1[i]:=0;

for i:=top2 to SIZE do

stack2[i]:=0;

end;

begin

read(n,m);

for i:=0 to n-1 do

read(stack1[i]);

top1:=________;

top2:=________;

for j:=0 to m-1 do

begin

read(i);

while (i

begin

dec(top1);

________;

inc(top2);

end;

while(i>top1—1)do

begin

dec(top2);

________;

inc(top1);

end;

clearStack();

writeln(stack1[________]);

end;

end.

2. (最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。

输入第一行包含两个整数m和n,即矩阵的行数和列数。之后m行,每行n个整数,描述整个矩阵。程序最终输出最大的子矩阵和。(第一空2分,其余3分,共14分)

const

SIZE=100;

var

matrix:array[1..SIZE,1..SIZE] of integer;

rowsum:array[1..SIZE,0..SIZE] of integer;

//rowsum[I,j]记录前i行前j个数的和

m, n, i, j, first, last, area, ans:integer;

begin

read(m,n);

for i:=1 to m do

for j:=1 to n do

read(matrix[i,j]);

ans:=matrix________;

for i:=1 to m do

________;

for i:=1 to m do

for j:=1 to n do

rowsum[i,j]:=________;

for first:=1 to n do

for last:=first to n do

begin

________;

for i:=1 to m do

begin

area:=area + ________;

if (area>ans) then

ans:=area;

if (area<0) then

area:=0;

end;

end;

writeln(ans);

end.

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

提高组参考答案

一、单项选择题(共15 题,每题1.5 分,共计22.5 分)

二、不定项选择题(共5题,每题1.5 分,共计7.5 分,多选或少选均不得分)

CCF NOIP2014初赛提高组Pascal语言试题

第 10 页共 12 页

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

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 27

五、完善程序(第1题第2空3分,其余每空2.5 分,共计28 分)以下各程序填空可能还有一些等价的写法,各省赛区可请本省专家审定和上机验证,可以不上报CCF NOI科学委员会检查。

CCF NOIP2014初赛提高组Pascal语言试题

第 11 页共 12 页

CCF NOIP2014初赛提高组Pascal语言试题

第 12 页共 12 页

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 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

noip2014普及组复赛题解

1.珠心算测验 注意看清题意:其中有多少个数,恰好等于集合中另外两个(不同 的)数之和。这样的题意加上100的规模,建议暴力3个for: #include #include #include #include using namespace std; int n; int a[105]; int main(){ freopen("count.in","r",stdin); freopen("count.out","w",stdout); scanf("%d",&n); for(int i=1; i<=n; i++){ scanf("%d",&a[i]); } sort(a+1,a+n+1); int res=0; for(int i=1; i<=n; i++){ int ok=0; for(int j=1; j<=n && !ok; j++) if(j!=i){ for(int k=1; k<=n && !ok; k++) if(a[k]!=a[j]){ if(a[j]+a[k]==a[i]) ok=1; } } res+=ok; } printf("%d\n",res); return 0; } 2.比例简化 L很小,还是枚举,然后比较的话建议用乘法比较,避免精度问题:#include #include #include using namespace std; int A,B,L; int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b); } int main(){ freopen("ratio.in","r",stdin); freopen("ratio.out","w",stdout); scanf("%d%d%d",&A,&B,&L); int ba=1000000,bb=1; for(int i=1; i<=L; i++){ for(int j=1; j<=L; j++){ if(gcd(i,j)==1 && i*B>=j*A){

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

NOIP竞赛模拟试题

NOIP2016普及组复赛模拟赛试卷 普及组 (请选手务必仔细阅读本页内容) 二.提交源程序文件名 三.编译命令(不包含任何优化开关) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。 3、统一评测时采用的机器配置为:CPU P4 3.0GHz,内存 2G,上述时限以此配置为准。 4、特别提醒:评测在Windows下进行,评测软件为cena8.0。

River Hopscotch (jump.pas/c/cpp) 【问题描述】 每年,奶牛们都举办一种特殊的跳房子游戏,在这个游戏中,大家小心翼翼地在河中的岩石上跳。这个游戏在一条笔直的河中进行,以一块岩石表示开始,以另一块距离起点L单位长度的岩石表示结束。在这两块岩石中间还有N 块岩石,每块的位置距离起点是 Di 个单位长度。 玩这个游戏的时候,每头牛从开始的那块岩石想办法要跳到表示结束的那块岩石上。中间只能在从某块岩石跳跃到另一块岩石,反复的这样跳。当然,不够敏捷的牛永远跳不到终点,最终只能落入河中。 农民 John 为他的牛感到自豪,每年都观看比赛。随着时间的推移,他对于那些胆小的只能跳过很短距离的牛感到厌烦。为了那些牛,其他农民会把岩石的间距弄得很小。他计划移除一些岩石,从而增加奶牛在跳跃时需要的最短距离。他不能移除开始和结束的两块岩石。但是除此之外他可以移除 M 块岩石。 FJ 希望知道他能够增加多少最短跳跃距离。求当他移除了M块岩石后,奶牛从开始跳到结束的岩石,每次跳跃的最短距离至多可以增加到多少。 【输入格式】 第1行: 三个用空格分开的整数,分别是 L, N 和 M。 第2..N+1行: 每行一个整数,表示中间N块岩石的位置,没有两块岩石处于同一位置。 【输出格式】 输出共一行一个整数,表示移除某M块岩石后,相邻岩石间距最小值的最大可能情况。 【输入样例】 25 5 2 2 14 11 21 17 【输出样例】 4 【输入说明】中间有 5 块岩石,坐标 2, 11, 14, 17 和 21。开始岩石在0,结束岩石在25。 【输出解释】没有移除任何岩石之前,最少需要跳2个单位长度,从0到2。当移除了位于 2 和 14的两块岩石后, 需要的最短跳跃距离就变成了4。(从 17 到 21 或从 21 到 25)。 【数据规模】 对于30%的数据: 0≤N≤100; 对于50%的数据: 0≤N≤5,000; 对于100%的数据:1≤L≤1,000,000,000;0≤N≤50,000;0

NOIP1999普及组(复赛)

第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题 (普及组 竞赛用时:3小时) 第一题 Cantor 表(30分) 现代数学的著名证明之一是Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 我们以Z 字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,… 输入:整数N (1≤N ≤10000000) 输出:表中的第N 项 样例: INPUT OUTPUT N=7 1/4 第二题 回文数(30分) 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加56(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进行了一次N 进制的加法,上例最少用了4步得到回文数4884。 写一个程序,给定一个N (2<=N<=10,N=16)进制数M ,求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible !” 样例: INPUT OUTPUT N = 9 M= 87 STEP=6 第三题 旅行家的预算(40分) 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C (以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P 和沿途油站数N (N 可以为零),油站i 离出发点的距离Di 、每升汽油价格Pi (i=1,2,…,N )。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution ”。 样例: INPUT … 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … …

NOIP2014(第二十届)初赛普及组C语言试题及答案

第二十届全国青少年信息学奥林匹克联赛初赛 普及组C语言试题 竞赛时间:2014年10月12日14:30-16:30 选手注意: 试题纸共有8页,答题纸共有2页,满分100分。请在答题纸上作答,写在 试题纸上的 一律无效。 不得使用任何电子设备(如讣算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) 1.以下哪个是面向对象的高级语言()。 A.汇编语言 B. C++ C. Fortran D. Basic 2.1TB代表的字节数量是()。 A.2的10次方 B. 2的20次方 C. 2的30次方 D. 2的40次方 3.二进制数00100100 和00010101 的和是()。 A.00101000 B. 001010100 C. 01000101 D. 00111001 4.以下哪一种设备属于输出设备()。 A.扫描仪 B.键盘 C.鼠标 D.打印机 5.下列对操作系统功能的描述最为完整的是()。 A.负责外设与主机之间的信息交换 B.负责诊断机器的故障 C.控制和管理计算机系统的各种硬件和软件资源的使用 D.将源程序编译成目标程序 6.CPU、存储器、I/O设备是通过()连接起来的。 A.接口 B.总线 C.控制线 D.系统文件 7.断电后会丢失数据的存储器是()。 A. RAM B. ROM C.硬盘 D.光盘 8.以下哪一种是属于电子邮件收发的协议()。 A. SMTP B. UDP C. P2P D. FTP 9.下列选项中不属于图像格式的是()。 A. JPEG格式 B.TXT格式 C. GIF格式 D. PNG格式

NOIP复赛模拟题一

NOIP复赛模拟题一 1、与3和5无关的数(num.cpp) 描述 一个正整数x,如果它能被x整除,或者它的十进制表示法中某个位数上的数字为x,则称其为与x相关的数.现求所有小于等于n(n<300)的与x无关的正整数的平方和. <300)的与x无关的正整数的平方和.

输入 输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是一只白鼠的信息。第一个为正整数,表示白鼠的重量,; 第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。 注意:白鼠的重量各不相同。 输出 按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。 样例输入 3 30 red 50 blue 40 green 样例输出 red green blue 3、滑雪(skate.cpp) 描述 Michael喜欢滑雪百这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6

全国信息学奥林匹克联赛(noip2013)复赛试题

全国信息学奥林匹克联赛(NOIP2013 )复赛 普及组 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 出现的次数。 【输入输出样例】 count.in count.out 11 1 4 【数据说明】 对于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 不输出。 第2 页共5 页

【输入输出样例1】 expr.in expr.out 1+1*3+4 8 【输入输出样例2 】 expr.in expr.out 1+1234567890*1 7891 【输入输出样例3 】 expr.in expr.out 1+1000000003*1 4 【输入输出样例说明】 样例1 计算的结果为8,直接输出8。 样例2 计算的结果为1234567891,输出后4 位,即7891 。 样例3 计算的结果为1000000004,输出后4 位,即4 。 【数据范围】 对于30%的数据,0≤表达式中加法运算符和乘法运算符的总数≤ 100; 对于80%的数据,0≤表达式中加法运算符和乘法运算符的总数≤ 1000; 对于100%的数据,0≤表达式中加法运算符和乘法运算符的总数≤ 100000。 3.小朋友的数字 (number.cpp/c/pas) 【问题描述】 有n 个小朋友排成一列。每个小朋友手上都有一个数字,这个数字可正可负。规定每个 小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋友手上的数字之和的最大值。 作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这样规定的:第一个小朋友的分数是他的特征值,其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人), 小朋友分数加上其特征值的最大值。 请计算所有小朋友分数的最大值,输出时保持最大值的符号,将其绝对值对 p 取模后输出。 【输入】 输入文件为number.in。 第一行包含两个正整数n 、p ,之间用一个空格隔开。 第二行包含n 个数,每两个整数之间用一个空格隔开,表示每个小朋友手上的数字。

NOIP初赛普及组C++题目及答案

第二十二届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2016年10月22日14:30~16:30 选手注意: ● 试题纸共有9页,答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸 上的一律无效。 ● 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。一、单项选择题(共20题,每题分,共计30分;每题有且仅有一个正确选 项) 1.以下不是微软公司出品的软件是()。 A. Powerpoint B. Word C. Excel D. AcrobatReader 2. 如果256种颜色用二进制编码来表示,至少需要()位。 A. 6 C. 8 3.以下不属于无线通信技术的是()。 A. 蓝牙 B. WiFi C. GPRS D. 以太网 4. 以下不是CPU生产厂商的是()。 D. IBM A. Intel B. AMD C. Microsoft 5. 以下不是存储设备的是()。 D. 鼠标 A. 光盘 B. 磁盘 C. 固态硬盘 6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、 字母键A、字母键S和字母键D的顺序循环按键,即CapsLock、A、S、D、 CapsLock、A、S、D、……,屏幕上输出的第81个字符是字母()。 A. A C. D D. a 7. 二进制数00101100和00010101的和是()。 A. 00101000 C. 01000100 D. 00111000 8. 与二进制小数相等的八进制数是()。 D. A. 初赛普及组C++语言试题第1页,共9 页

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 usingnamespacestd; intmain(){ intk=4,n=0; while(n。如果L中存在x(i1x i+1>...>x n,则称L是单峰的,并称x i是L的 CCFNOIP2016初赛普及组C++语言试题 第2页,共9页

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

图书馆馆长正犯愁呢,原来,有一堆的书要他整理,每本书都有一个书号(<=32767),现在他有一本书,这本书的书号为K(<=32767),现在他要找出一本书号比这本书大的书和书号比这本小的书(但都要最接近图书馆馆长已有的书号),将找到的这两本书的书号加起来,并算出加起来以后的数是否为素数 Input 第一行二个数为N,K,表示几本书以及手中书的书号(<=32767) 第二行开始有N个整数,表示这些书的书号 Output 第一行一个数,表示两本书书号加起来的和 第二行一个字符,表示和是否为素数,若是则输出"Y"否则输出"F"(引号不打出)Sample Input 6 5 6 4 5 3 1 20 Sample Output 10 F program ex1148; var n,k,i,x,s:integer; a:array[0..32767] of integer; f:boolean; begin readln(n,k); fillchar(a,sizeof(a),0); for i:=1 to n do begin read(x); a[x]:=1; end; s:=0; for i:=k+1 to 32767 do if a[i]<>0 then begin s:=s+i;break; end; for i:=k-1 downto 1 do if a[i]<>0 then begin s:=s+i;break; end; f:=true; for i:=2 to trunc(sqrt(s)) do if s mod i=0 then begin f:=false;break;end; writeln(s); if f=true then write('Y') else write('F'); end. 输入12 7 8 12 18 7 11 3 20 15 14 26 21 16 输出11 Y 输入21 10

8.noip2014试题

全国信息学奥林匹克联赛(NOIP2014)复赛普及组 第2页共6页 1. 珠心算测验 (count.cpp/c/pas) 【问题描述】珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。 某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?最近老师出了一些测验题,请你帮忙求出答案。 【输入】 输入文件名为count.in。输入共两行,第一行包含一个整数n,表示测试题中给出的正整数个数。 第二行有n个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。【输出】 输出文件名为count.out。输出共一行,包含一个整数,表示测验题答案。 【输入输出样例】 count.in count.out 4 1 2 3 4 2 【样例说明】 由1+2=3,1+3=4,故满足测试要求的答案为2。注意,加数和被加数必须是集合中的两个不同的数。 【数据说明】 对于100%的数据,3 ≤ n ≤ 100,测验题给出的正整数大小不超过10,000。

第3页共6页 2.比例简化 (ratio.cpp/c/pas) 【问题描述】 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。例如,对某一观点表示支持的有1498人,反对的有902人,那么赞同与反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种方式呈现出来,大多数人肯定不会满意。因为这个比例的数值太大,难以一眼看出它们的关系。对于上面这个例子,如果把比例记为5:3,虽然与真实结果有一定的误差,但依然能够较为准确地反映调查结果,同时也显得比较直观。 现给出支持人数A,反对人数B,以及一个上限L,请你将A比B化简为A’比B’,要求在A’和B’均不大于L且A’和B’互质(两个整数的最大公约数是1)的前提下,A’/B’≥ A/B 且A’/B’ - A/B的值尽可能小。 【输入】 输入文件名为ratio.in。输入共一行,包含三个整数A,B,L,每两个整数之间用一个空格隔开,分别表示支持人数、反对人数以及上限。 【输出】输出文件名为ratio.out。 输出共一行,包含两个整数A’,B’,中间用一个空格隔开,表示化简后的比例。 【输入输出样例】 ratio.in ratio.out 1498 902 10 5 3 【数据说明】 对于100%的数据,1 ≤ A ≤ 1,000,000,1 ≤ B ≤ 1,000,000,1 ≤ L ≤ 100, A/B ≤ L。

NOIP提高组初赛历年试题及答案选择题篇

NOIP提高组初赛历年试题及答案选择题篇单项选择题(共10-15题,每题1.5分,共计15-22.5分。每题有且仅有一个正确选项。)注:答案在末尾 NOIP2011-1.在二进制下,1011001+()=1100110。同普及组NOIP2011-1 A.1011 B.1101 C.1010 D.1111 NOIP2011-2.字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。 A.66 B.5A C.50 D.视具体的计算机而定 NOIP2011-3.下图是一棵二叉树,它的先序遍历是()。 A.ABDEFC B.DBEFAC C.DFEBCA D.ABCDEF NOIP2011-4.寄存器是()的重要组成部分。同普及组NOIP2011-6 A.硬盘 B.高速缓存 C.内存 D.中央处理器(CPU) NOIP2011-5.广度优先搜索时,需要用到的数据结构是()。同普及组 NOIP2011-11 A.链表 B.队列 C.栈 D.散列表

NOIP2011-6.在使用高级语言编写程序时,一般提到的“空间复杂度”中的空间是指()。同普及组NOIP2011-12 A.程序运行时理论上所占的内存空间 B.程序运行时理论上所占的数组空间 C.程序运行时理论上所占的硬盘空间 D.程序源文件理论上所占的硬盘空间 NOIP2011-7.应用快速排序的分治思想,可以实现一个求第K大数的程序。假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为()。A.O(n2) B.O(n log n) C.O(n) D.O(1) NOIP2011-8.为解决web应用中的不兼容问题,保障信息的顺利流通,()制定了一系列标准,涉及HTML、XML、CSS等,并建议开发者遵循。 A.微软 B.美国计算机协会(ACM) C.联合国教科文组织 D.万维网联盟(W3C) NOIP2011-9.体育课的铃声响了,同学们都陆续的奔向操场,按老师的要求从高到低站成一排。每个同学按顺序来到操场时,都从排尾走到排头,找到第一个比自己高的同学,并站在他的后面。这种站队的方法类似于()算法。同普及组NOIP2011-8 A.快速排序 B.插入排序 C.冒泡排序 D.归并排序 NOIP2011-10.1956年()授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain),以表彰他们对半导体的研究和晶体管效应的发现。同普及组NOIP2011-18 A.诺贝尔物理学奖 B.约翰·冯·诺依曼奖 C.图灵奖 D.高德纳奖(Donald E.KnuthPrize)

NOIP模拟试题

全国信息学奥林匹克联赛(NOIP2011)复赛 提高组 模拟模拟试题试题试题(二试) (二试)(请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称密码子翻译苹果二叉树青蛙王子的口令 英文题目与子目录名cell apple order 可执行文件名cell apple order 输入文件cell.in apple.in order.in 输出文件cell.out apple.out order.out 每个测试点时限1秒1秒1秒测试点数目101010每个测试点分值101010附加样例文件有有 有 结果比较方式全文比较(过滤行末空格及文末回车) 题目类型 传统 传统 传统二.提交源程序文件名 三.运行内存限制 对于pascal 语言cell.pas apple.pas order.pas 对于C 语言cell.c apple.c order.c 对于C++语言 cell.cpp apple.cpp order.cpp 内存上限 128M 128M 128M

1.密码子翻译 (cell cell.pas/c/cpp) .pas/c/cpp)【问题描述】 DNA 是一切细胞生物的遗传物质。它能指导蛋白质的合成,从而控制细胞的新陈代谢和生物的性状。 中心法则(genetic central dogma )是所有有细胞结构的生物所遵循的法则,它的主要内容是遗传信息从DNA 传递给mRNA ,再从mRNA 传递给蛋白质的转录和翻译的过程(如图)。 mRNA 是由许多核糖核苷酸组成的链状分子,但这些核糖核苷酸不外乎4种:腺嘌呤核糖核苷酸(A ),鸟嘌呤核糖核苷酸(G ),胞嘧啶核糖核苷酸(C )和尿嘧啶核糖核苷酸(U )。mRNA 上三个相邻的核糖核苷酸序列叫做密码子,一个密码子可以翻译成一个氨基酸,且密码子不重叠。已知:一条mRNA 只能翻译成若干种氨基酸,并且知道决定这些氨基酸的密码子。给出一条mRNA 的核糖核苷酸序列,请你计算出它最多能翻译成多少氨基酸。【输入】 输入文件名为cell.in 。 第一行,一个长度为l 的字符串,表示核糖核苷酸序列。 接下来若干行,每行一个密码子,只有这些密码子能够翻译成氨基酸。相同的密码子不重复出现。 输入数据仅由A 、G 、C 、U 四个大写字母组成。【输出】 输出文件名为cell.out 。 只有一个正整数N ,表示给出的核糖核苷酸序列组成的mRNA 最多能翻译成氨基酸的数目。 【输入输出样例1】【输入输出样例 1说明】 在核糖核苷酸序列ACACGAUC 中标出密码子:ACACGAUC 这样最多只能选取CAC 、 AUC 两个密码子翻译,即输出2。 cell cell.in .in cell.out ACACGAUC CAC AUC CGA 2

noip普及组复赛入门训练12(答案)

PASCAL复习12 1.自然数(文件名ZRS.PAS) 【问题描述】任意给定一个自然数M(M<999999999),如果它的所有各位数字都是由0或1组成,则输出YES,否则输出NO.例: 输入:100 输出:YES 输入:31 输出: NO Var m,x,a:longint; f:boolean; Begin readln(m); x:=m; f:=true; while (x>0)and f do begin a:=x mod 10; if (a<>0)and(a<>1) then f:=false; x:=x div 10; end; if f then writeln(‘YES’) else writeln(‘NO’); readln; End. 2.字符串(文件名ZFC.PAS) 【问题描述】由键盘输入一个超过10个字符的字符串,已知其中有两个“A”,以回车键结束。请你编个程序实现一下两个功能, 1、打印出第一个“A”所在的位置 2、打印出两个“A”之间的字符以及字符个数。 输入:TEACHERSTUDENTAND 输出:3 CHERSTUDENT 11 V AR T,T1:INTEGER; C:CHAR; BEGIN T:=0;t1:=0; Read(c); Repeat t:=t+1;

if c=‘A’then begin writeln(t); read(c); repeat write(c); t1:=t1+1; read(c); until c=‘A’; end; read(c); Until c=chr(13); Writeln; Writeln(t1); END. 3.数位和与积(文件名HWHJ.pas) 【问题描述】试编写程序求出n个自然数的各个数位之和与之积。输入:一个自然数n(n<=5)及n个自然数 输出:各行依次输出每一个自然数n的各个数位之和与之积。例如: 输入: 3 92 23 1024 输出 11 18 5 6 7 0 var i,t,x,y,z:integer; begin readln(t); for i:=1 to t do begin read(x); y:=0; z:=1; while x>0 do begin y:=y+x mod 10; z:=z*(x mod 10); x:=x div 10; end; writeln(y,' ',z); end; readln; readln end. 4. 黑色星期五(文件名HSXQW.PAS)

NOIP复赛模拟试题I.doc

NOIP 复赛模拟试题(I ) 1. 医院设置(hospital.cpp ) 【问题描述】 设有一棵二叉树(如下閔,其中圈中的数字表示结点中居民的人口,圈边h 数字表示结 点编号。现在要求在某个结点上建立一个返院,使所奋佔W 所走的路程之和为最小,同吋约 定,相邻结点之 M 的距离为1。就木阁而言,若医院建在1处,则距离和 =4+12+2*20+2*40=136;若民院建在 3 处, 则距离和=4*2+13+20+40=81…… 【输入格式(hospital.in )] 其中第一行一个整数n,表示树的结点数(n<=100)。接K 来的n 行 每行描述了 一个结点的状况,包含三个整数,整数之间川空格(一 个或多个)分隔,其中:第一个数为店民人口数;第二个数为左链 接,为0表示无链接;第三个数为右链接,为0表示无链接。 【输出格式(hospital.out )】 该文件只有一个整数,表示最小距离和。 【样例输入】 5 1323 400 12 4 5 20 0 0 40 0 0 【样例输出】 81 2. 而税(area.cpp ) 【问题描述】 编程计算由“ * ”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线中 水平线和垂直线交点的数目。如右K 图所示,在10*10的二维数组中,有“围住了 15个点, 因此面积为15。在输入中,为了方便起见使用“1”来代替右图中的“*”。。 【输入格式(area.in )】 ° 输入数据保证仅冇一个10*10的01矩阵 ° 【输出格式(area.out )】 o 0 0 0 0 一个数,表示面积 【样例输入】

0000000000 0000111000 0000100100 00000 10010 0010001010 ()10101 0 0 1 0 010******* 0010000100 000 1111100 0000000000 【样例输出】 15 3.极值问题(number.cpp) 【问题描述】 已知m、n为整数,且满足下列两个条件: ①m、nG { 1 , 2 ,…,k},即Km, n^k ②(n2—m*n —m2) 2=1 你的任务是:编程输入正整数k (l

NOIP2014普及组复赛试题解答2

NOIP2014普及组复赛试题解答 3. 螺旋矩阵 【问题描述】 一个n 行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入1,2,3,…,n2,便构成了一个螺旋矩阵。 现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。 【分析】 这是个蛇形填数问题。如果采用先枚举二维数组再找对应的元素方法,由于1 ≤n ≤30,000,需要建立一个 30,000× 30,000的二维数组,结果会发生数据溢出且超出运行内存上限(128M)。 我们可以采用类似贪吃蛇的方法,让它在N×N个方格内自外向内逐格移动,控制其向右转的方向,并计算其长度。 解法一 #include using namespace std; bool pd(int,int) ; int i,j; bool p; int main() { int n,x,y,u,d,l,r,tot=0; // U为上边界,D为下边界,L为左边界,R为右边界; freopen("matrix.in","r",stdin); freopen("matrix.out","w",stdout); scanf("%d%d%d",&n,&i,&j);

d=n;r=n;u=1;l=1; //各边界赋初值; x=1;y=0; p=true; while((totl)&&p){--y;++tot;pd(x,y);}++l;//在下侧边界上向左移动,当下侧一行的结束时,控制其左边界向右缩一列; while((x>u+1)&&p){--x;++tot;pd(x,y);}++u;//在左侧边界上向上移动,当左侧一列的结束时,控制其上边界向下缩一行; } printf("%d\n",tot); fclose(stdin);fclose(stdout); return 0; } bool pd(int x,int y) //判断是否到达目的地,如果到达则停止枚举; { if((x==i)&&(y==j))p=false; return P; } 解法二: 在上一个解法中,如果遇到极端情况时,可能需要枚举达900000000次,这显然太慢了些,我们可以根据贪吃移动的特点对程序进行优化。

2014noip复赛模拟练习11(答案)

新学年就要开始了,爸爸把N元钱给了小青,让他购买一批文具,并作了以下要求:只能买圆珠笔、铅笔和铅笔芯,并且每样至少买一支,总数要超过30支,而且钱要全部花完。当小青去到文具店时,发现圆珠笔8角钱一支、铅笔2角钱一支、铅笔芯1角钱一支。小青怎么买才能符合爸爸的要求呢?请你编个程序帮他算出符合购买要求的所有方案总数。 Input 一个整数N,表示购买文具一共的元数。(1 <= N <= 50) Output 一个整数,即符合购买要求的所有方案总数。 Sample Input 8 Sample Output 135 Source program ex1294; var n,i,j,k,sum:integer; begin readln(n); n:=n*10; sum:=0; for i:=1 to n div 8 do for j:=1 to n div 2 do begin k:=n-i*8-j*2; if (i+j+k>30) and (k>1) then inc(sum); end; writeln(sum); end. 任意一个数都可以由1、2、3三个数组合而成。如4有以下7种组合方案: 1 + 1 + 1 + 1 1 + 1 + 2 1 + 2 + 1 2 + 1 + 1 2 + 2 1 + 3 3 + 1 你的问题来了,对于给定的一个数,请你计算出这个整数可以有多少个组合方案,其和由1、2、3组合而成。 数据输入 输入包含多组数据,每一组数据中,输入数据的第一行为一个整数n(1<=n<=20),要分解的数。

数据输出 这个整数的分解的组合数。 样例输入 4 样例输出 7 分析 用f(n)表示将n按照1、2、3分解的方法数 当n=1时, f(1)=1; {1} 当n=2时, f(2)=2; {1+1},{2} 当n=3时, f(3)=3; {1+1+1},{1+2},{2+1},{3} 当 n=k时 (k>=4) 考虑最后添加的一个数字可能是1、2、3。 所以很容易推出递推公式 f(k)=f(k-1)+f(k-2)+f(k-3). var f:array[1..20] of longint; i,n:longint; procedure init; begin assign(input,'divide.in'); assign(output,'divide.out'); reset(input); rewrite(output); end; procedure endit; begin close(input); close(output); end; begin init; readln(n); f[1]:=1; f[2]:=2;

相关文档
最新文档