学科竞赛NOIP1995提高组复赛试题.docx

上传人:b****6 文档编号:6742940 上传时间:2023-01-09 格式:DOCX 页数:124 大小:78.35KB
下载 相关 举报
学科竞赛NOIP1995提高组复赛试题.docx_第1页
第1页 / 共124页
学科竞赛NOIP1995提高组复赛试题.docx_第2页
第2页 / 共124页
学科竞赛NOIP1995提高组复赛试题.docx_第3页
第3页 / 共124页
学科竞赛NOIP1995提高组复赛试题.docx_第4页
第4页 / 共124页
学科竞赛NOIP1995提高组复赛试题.docx_第5页
第5页 / 共124页
点击查看更多>>
下载资源
资源描述

学科竞赛NOIP1995提高组复赛试题.docx

《学科竞赛NOIP1995提高组复赛试题.docx》由会员分享,可在线阅读,更多相关《学科竞赛NOIP1995提高组复赛试题.docx(124页珍藏版)》请在冰豆网上搜索。

学科竞赛NOIP1995提高组复赛试题.docx

学科竞赛NOIP1995提高组复赛试题

 

NOI’95“同创杯”全国青少年信息学(计算机)奥林匹克竞赛2

第二届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题4

第三届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题5

第四届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题7

第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题8

2000年10

2001年15

2002年17

第九届全国青少年信息学奥林匹克联赛(N0IP2003)21

第十届全国青少年信息学奥林匹克联赛复赛试题25

2005年31

NOIP2006提高组复赛试题35

2007年44

全国信息学奥林匹克联赛(NOIP2008)复赛50

2009年56

2010年60

2011年错误!

未定义书签。

 

NOI’95“同创杯”全国青少年信息学(计算机)奥林匹克竞赛

 

分区联赛复赛试题(高中组)

 

(上机编程,完成时间:

210分钟)

 

<1>

 

编码问题:

设有一个数组A:

ARRAY[0..N-1]OFINTEGER

数组中存放的元素为0~N-1之间的整数,且

A[i]

≠A[j]

(当

i≠j时)。

例如:

N=6时,有:

此时,数组A的编码定义如下:

A[0]的编码为0;

A[i]的编码为:

在A[0],A[1]

∴上面数组A的编码为:

A=(4,3,0,5,1,2)

 

,⋯,A[i-1]中比A[i]的值小的个数(

B=(0,0,0,3,1,2)

 

i=1,2,⋯,N-1)

程序要求解决以下问题:

①给出数组A后,求出其编码。

②给出数组A的编码后,求出A中的原数据。

 

<2>灯的排列问题:

设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,

Nk(k表示不同颜色灯的个数)。

 

每种灯的个数记为

 

N1,N2,⋯⋯

 

放灯时要遵守下列规则:

①同一种颜色的灯不能分开;

②不同颜色的灯之间至少要有一个空位置。

 

例如:

 

N=8(格子数)

R=2(红灯数)

B=3(蓝灯数)

 

放置的方法有:

 

R-B

 

顺序

 

RR

 

B

 

B

 

B

RR

B

B

B

RR

B

B

B

RR

B

B

B

 

RRBBB

 

B-R顺序

 

B

B

B

R

R

B

B

B

R

R

B

B

B

R

R

B

B

B

R

R

B

B

B

R

R

B

B

B

R

R

 

放置的总数为12种。

 

数据输入的方式为:

N

P1(颜色,为一个字母)N1(灯的数量)

P2N2

⋯⋯

Q(结束标记,Q本身不是灯的颜色)

 

程序要求:

求出一种顺序的排列方案及排列总数。

 

<3>设有一个四层的积木块,

1~4层积木块的数量依次为:

5,6,7,8

如下图所示放置:

 

8

15

8

5

16

9

14

2

3

4

1

4

3

2

6

 

其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。

计算的方法是:

第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的:

A

BC

 

计算所用到的计算符为:

+,-,

如:

3+45=3554+3=23

 

,且无优先级之分(自左向右计算)

 

,运算符最多为

 

2个。

可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:

A=BC+B

也就是:

8=23+2,15=34+3,⋯⋯14=26+2

程序要求:

给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。

①输入数据不存在出错的情况,同时也不会超过整数的范围。

②计算时可允许出现以下情况:

A=B(即可理解为运算符的个数为零)

 

A=BB+B(即全部由B产生)

 

第二届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

 

(高中组竞赛用时:

3小时)

 

1.比赛安排(20分)

设有有2n(n<=6)个球队进行单循环比赛,计划在

2n–1天内完成,每个队每天进行一场比赛。

设计

一个比赛的安排,使在

2n–1

天内每个队都与不同的对手比赛。

例如n=2时的比赛安排:

1

2

34

比赛

1==2

3==4

一天

1==3

2==4

二天

1==4

2==3

三天

2.数制转换(20分)

设有一个字符串A$的结构为:

A$=’mp’

其中m为数字串(长度<=20),而n,p均为1或2位的数字串(其中所表达的内容在

程序要求:

从键盘上读入A$后(不用正确性检查),将A$中的数字串m(n进制),以

出。

例如:

A$=’48<10>8’

 

2-10之间)。

p进制的形式输

其意义为:

将10进制数48,转换成8进制数输出。

输出结果为:

48<10>=60<8>

 

4.挖地雷(30分)

在一个地图上有

N个地窖(N<=20),每个地窖中埋有一定数量的地雷。

同时,给出地窖之间的连接

路径。

例如:

[题目要求]

当地窖及其连

V1

V2

V3

V4接的数据给出之

V5

后,某人可以从任

一处开始挖地雷,

然后可以沿着指出

的连接往下挖(仅能选择一条路径)

,当无连接时挖地雷工作结束。

设计一个挖地雷的方案,使某人能挖

到最多的地雷。

输入格式:

N:

(表示地窖的个数)

W1,W2,W3,⋯⋯WN

(表示每个地窖中埋藏的地雷数量)

A12⋯⋯⋯⋯⋯.

A1N

ij=1表示地窖i,j

A23⋯⋯⋯⋯..A2N

地窖之间连接路径(其中A

之间是否有通路:

通Aij=1,不通Aij==0)

⋯⋯..

AN-1

N

 

输出格式:

K1--K2--

⋯⋯⋯.KV

(挖地雷的顺序)

MAX

(挖地雷的数量)

例如:

--------⑧

④-----

⑦-------

其输入格式为:

输出:

5

1–3-4-5

10,8,4,7,6

max=27

1

1

1

0

0

0

0

1

1

1

4.砝码称重(30分)

设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重

<=1000),

要求:

输入方式:

a1

a2

a3

a4

a5

a6

(表示1g砝码有a1个,2g砝码有a2个,⋯,20g砝码有a6个)

输出方式:

Total=N

(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)如输入:

1_1_0_0_0_0(注:

下划线表示空格)

输出:

TOTAL=3表示可以称出1g,2g,3g三种不同的重量。

 

第三届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

 

(高中组竞赛用时:

3小时)

 

1.在N*N的棋盘上(1≤N≤10),填入1,2,⋯,N*N

共N*N

个数,使得任意两个相邻的数之和为素

数。

(30%)

例如:

当N=2时,有:

其相邻数的和为素数的有:

1

2

1+2,1+4,4+3,2+3

4

3

当N=4时,一种可以填写的方案如下:

1

2

11

12

16

15

8

5

13

4

9

14

6

7

10

3

在这里我们约定:

左上角的格子里必须填数字

1。

程序要求:

 

输入:

N;

输出:

如有多种解,则输出第一行、第一列之和为最小的排列方案;若无解,则输出“NO!

”。

 

2.代数表达式的定义如下:

 

字母a

b

 

c

 

例如,下面的式子是合法的代数表达式:

a;

a+b*(a+c);

a*a/(b+c)

下面的式子是不合法的代数表达式:

ab;

a+a*/(b+c);

程序要求:

输入:

输入一个字符串,以“;”结束,“;”本身不是代数表达式中字符,仅作为结束);输出:

若表达式正确,则输出“OK”;若表达式不正确,则输出“ERROR”,及错误类型。

错误类型约定:

1.式了中出现不允许的字符;

2.括号不配对;

3.其它错误。

例如:

输入:

例如:

输入:

a+(b);

a+(b+c*a;

输出:

输出:

OK

ERROR2

 

3.骑士游历:

设有一个n*m的棋盘(2≤n≤50,2≤m≤50),如下图,在棋盘上左下角有一个中国象棋马。

(n,m)

 

 

(1,1)

马走的规则为:

 

(1)马走日字;

(2)马只能向右走即如下图如示:

 

任务1:

当n,m输入之后,找出一条从左下角到右上角的路径。

例如,输入:

n=4,m=4

(4,4)

 

(1,1)

 

输出:

路径的格式:

(1,1)→(2,3)→(4,4)。

若不存在路径,则输出‘NO’

任务2:

当n,m给出之后,同时给出马起点的位置和终点的位置,试找出从起点到终点的所有路径的数目。

例如:

(n=10,m=10),(1,5)(起点),(3,5)(终点)

 

10

9

8

7

6

5

4

3

2

1

 

12

 

34

 

5

 

67

 

89

 

10

输出:

2(即由(1,5)到(3,5)共有2条路径)

输入格式:

n,m,x1,y1,x2,y2(分别表示n,m,起点坐标,终点坐标

输出格式:

路径数目(若不存在从起点到终点的路径,输出

 

0)

 

第四届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

 

(高中组竞赛用时:

3小时)

 

1.火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。

从第3站起(包括第3站)上、下车的人数有一定规律:

上车的人数都是前两站上车人数之和,而下

车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。

现给出的条件是:

共有

N个车站,始发站上车的人数为

a,最后一站下车的人数是

m(全部下车)。

试问

x站开出时车上

的人数是多少?

 

输入:

a,n,m和x

输出:

从x站开出时车上的人数。

{20%}

 

2.设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。

例如:

n=3时,3

个整数13,312,343联接成的最大整数为:

34331213

又如:

n=4时,4

个整数7,13,4,246联接成的最大整数为:

7424613

程序输入:

n

n个数

程序输出:

联接成的多位数{40%}

 

3.著名科学家卢斯为了检查学生对进位制的理解,

他给出了如下的一张加法表,

表中的字母代表数字。

如:

{40%}

其含义为:

+

L

K

V

E

L+L=L,L+K=K,L+V=V,L+E=E

L

L

K

V

E

K+L=K,K+K=V,K+V=E,K+E=KL

K

K

V

E

KL

⋯⋯

V

V

E

KL

KK

E+E=KV

E

E

KL

KK

KV

 

根据这些规则可推导出:

L=0,K=1,V=2,E=3

同时可以确定该表表示的是4进制加法

 

程序输入:

n(n≤9)表示行数。

以下n行,每行包括n个字符串,每个字串间用空格隔开。

(字串仅有一个为‘+’号,其它都由大写字母组成)

 

程序输出:

①各个字母表示什么数,格式如:

L=0,K=1,⋯⋯

②加法运算是几进制的。

③若不可能组成加法表,则应输出“ERROR!

 

第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题

 

(提高组竞赛用时:

3小时)

 

第一题拦截导弹(28分)

 

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。

但是这种导弹拦截系统有一个缺陷:

虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。

某天,雷达捕捉到敌国的导弹来袭。

由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

 

输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦

截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

 

样例:

INPUTOUTPUT

389207155300299170158656(最多能拦截的导弹数)

2(要拦截所有导弹最少要配备的系统数)

 

第二题回文数(25分)

 

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

例如:

给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。

 

又如:

对于10进制数87:

STEP1:

87+78=165

STEP3:

726+627=1353

 

STEP2

STEP4

 

165+561=726

1353+3531=4884

 

在这里的一步是指进行了一次

N进制的加法,上例最少用了

4步得到回文数

4884。

 

写一个程序,给定一个

如果在30步以内(包含

N(2<=N<=10或N=16)进制数M,求最少经过几步可以得到回文数。

30步)不可能得到回文数,则输出“Impossible!

 

样例:

INPUT

N=9M=87

OUTPUT

STEP=6

 

第三题

 

旅行家的预算

 

(27

 

分)

 

一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。

给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,⋯⋯N)。

计算结

果四舍五入至小数点后两位。

如果无法到达目的地,则输出“

NoSolution

”。

样例:

INPUT

D1=275.6C=11.9D2=27.4

P=2.8

N=2

 

油站号

 

I

 

离出发点的距离

 

Di

 

每升汽油价格

 

Pi

1

102.0

2.9

2

220.0

2.2

 

OUTPUT

26.95(该数据表示最小费用)

 

第四题邮票面值设计(40分)

 

给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮

票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1~MAX之间的每一个邮资值都能得到。

 

例如,N=3,K=2,如果面值分别为1分、4分,则在1分~6分之间的每一个邮资值都能得到(当然

还有8分、9分和12分);如果面值分别为1分、3分,则在1分~7分之间的每一个邮资值都能得到。

以验证当N=3,K=2时,7分就是可以得到的连续的邮资最大值,所以MAX=7,面值分别为1分、3分。

 

样例:

INPUTOUTPUT

N=3K=213

MAX=7

 

2000年

 

题一

进制转换

(18分)

问题描述

我们可以用这样的方式来表示一个十进制数:

将每个阿拉伯数字乘以一个以该数字所处位置的(值

减1)为指数,以10为底数的幂之和的形式。

例如:

123可表示为

+3*1

1*10

+2*10

这样的形式。

与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)

为指数,以2为底数的幂之和的形式。

一般说来,任何一个正整数R或一个负整数-R都可以被选来作为

一个数制系统的基数。

如果是以R或-R为基数,则需要用到的数码为

0,1,....R-1。

例如,当

R=7时,所需用到的数码是0,1,2,3,4,5和6,这与其是R或-R无关。

如果作为基数的数

绝对值超过10,则为了表示这些数码,通常使用英文字母来表示那些大于9的数码。

例如对16进制数

来说,用A表示10,用B表示11,用C表示12,用D表示13,用E表示14,用F表示15。

在负进制数中是用-R

作为基数,例如-15(十进制)相当于110001(-2进制)

,并且它可以

被表示为2的幂级数的和数:

110001=1*(-2)

+1*(-2)

+0*(-2)

+0*(-2)

0*(-2)

+1*(-2)

 

问题求解

 

设计一个程序,读入一个十进制数和一个负进制数的基数,并将此十进制数转换为此负进制下的数:

-R∈{-2,-3,-4,...,-20}

 

输入

输入的每行有两个输入数据。

第一个是十进制数N(-32768<=N<=32767);第二个是负进制数的基数-R。

 

输出

结果显示在屏幕上,相对于输入,应输出此负进制数及其基数,若此基数超过10,则参照16进制的方式处理。

 

输入

30000

-2

-20000

-2

28800

-16

-25000

-16

输出

30000=11011010101110000(base

-2)

-20000=1111011000100000

(base

-2)

28000=19180

(base

-16)

-25000=7FB8

(base

-16)

 

提高组题二乘积最大(22分)

 

问题描述

 

今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。

在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸

得以参加。

活动中,主持人给所有参加活动的选手出了这样一道题目:

 

设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。

 

同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:

 

有一个数字串:

312,当N=3,K=1时会有以下两种分法:

 

1)3*12=36

2)31*2=62

 

这时,符合题目要求的结果是:

31*2=62

 

现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。

 

输入

 

程序的输入共有两行:

第一行共有2个自然数N,K(6≤N≤40,1≤K≤6)

第二行是一个长度为N的数字串。

 

输出

 

结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数)。

 

样例

 

输入

 

42

1231

 

输出

62

提高组题三.单词接龙(27分)

 

问题描述

 

单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的

字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,

其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide间不能相连。

 

输入

 

输入的第一行为一个单独的整数n(n<=2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1