高级本光盘模拟试题集Word文件下载.docx

上传人:b****4 文档编号:18413908 上传时间:2022-12-16 格式:DOCX 页数:47 大小:55KB
下载 相关 举报
高级本光盘模拟试题集Word文件下载.docx_第1页
第1页 / 共47页
高级本光盘模拟试题集Word文件下载.docx_第2页
第2页 / 共47页
高级本光盘模拟试题集Word文件下载.docx_第3页
第3页 / 共47页
高级本光盘模拟试题集Word文件下载.docx_第4页
第4页 / 共47页
高级本光盘模拟试题集Word文件下载.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

高级本光盘模拟试题集Word文件下载.docx

《高级本光盘模拟试题集Word文件下载.docx》由会员分享,可在线阅读,更多相关《高级本光盘模拟试题集Word文件下载.docx(47页珍藏版)》请在冰豆网上搜索。

高级本光盘模拟试题集Word文件下载.docx

玛丽卡23

PASTE24

SEARCH24

第三套25

文件排版25

纵横填字游戏26

普通递归关系27

完美的对称28

普及组

第一套

打保龄球

源程序名   bowling.?

?

(pas,c,cpp)

可执行文件名bowling.exe

输入文件名  bowling.in

输出文件名bowling.out

打保龄球是用一个滚球去打击十个站立的柱,将柱击倒。

一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。

一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。

即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。

具体的滚球击柱规则和计分方法如下:

(1)若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加两次滚球,不妨称其为第十一轮和第十二轮,并不是所有的情况都需要滚第十一轮和第十二轮球)。

该轮得分为本次击倒柱数10与以后两次滚球所击倒柱数之和。

(2)若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。

如果这两次滚球击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加一次滚球),该轮得分为这两次共击倒柱数10与以后一次滚球所击倒柱数之和。

(3)若某一轮两次滚球未击倒全部十个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。

总之,若—轮中一次滚球或两次滚球击倒十个柱,则本轮得分是本轮首次滚球开始的连续三次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。

若一轮内二次滚球击倒柱数不足十个,则本轮得分即为这两次击倒柱数之和。

下面以实例说明如下(字符“/”表示击倒当前球道上的全部的柱):

轮123456789101112

击球情况///729/818//9//8/

各轮得分302719918920202020

累计总分30577685103112132152172192

现在请你编写一个保龄球实时计分程序,用来计算和显示某轮结束后的得分情况。

若某轮的得分暂时无法算出,则该轮得分不显示。

输入:

输入数据用文件bowling.in,文件内容仅有一行,为前若干轮滚球的情况,每轮滚球用一到两个字符表示,每一个字符表示一次击球,字符“/”表示击倒当前球道上的全部的柱,否则用一个数字字符表示本次滚球击倒的当前球道上的柱的数目,两轮滚球之间用一个空格字符隔开。

如上例对应的输入文件内容为:

///729/818//9//8/

输出:

输出到文件bowling.out,共两行,第一行为每轮得分,第二行为到当前轮为止的总得分。

每个得分之间用一个空格隔开。

样例输入:

///729/818//9//8/

样例输出:

302719918920202020

30577685103112132152172192

安全逃离

源程序名EVAC.?

(PAS,C,CPP)

可执行文件名EVAC.EXE

输入文件名EVAC.IN

输出文件名EVAC.OUT

农夫john最近在研究如果发生重大事故,如何让农场里的奶牛逃离问题。

他想要确信在紧急情况下,所有的奶牛都有一个安全逃离方案。

因为在紧急情况下,奶牛们都会失去观察和判断能力,所以最近john一直在教奶牛们逃离的方法,他的方法很简单,就是任何时候都只向北方或东方逃离,北方是行坐标减1的方向,东方是列坐标加1的方向。

奶牛们虽笨,不过这一点事关自己的生命,所以他们牢记在心,而且也一定会这么做。

当然也会出问题,奶牛们在逃离的方向上会横冲直撞,为了阻止奶牛之间互相冲撞造成伤害,john要求任何一个奶牛的逃离路线不能经过其它奶牛的初始位置。

一个逃离方案是安全的如果它能够满足上面的要求,反之它就是不安全的。

奶牛们所在的土地(农场)被划分成了r行和c列的一个矩形地图。

奶牛们都待在这个矩形中的某一个位置。

请帮助john确定给定的一个地图上是否存在一个安全的逃离方案。

比如,下面的两个图:

左边的例子表示了一个能够安全逃离的地图,因为没有任何一个奶牛的逃离路线上包括其他奶牛。

右边的例子表示了一个不安全的地图,因为位于(4,1)的奶牛不论是向东逃离还是向北逃离,它的路线上都会有别的奶牛,从这个图中拿掉任意一头奶牛,这个地图都会变成安全的。

安全不安全

||||C--C.....

||||C--^.....

|C||C--|.....

CC-+-+----C------>

C.

..CCC--......

C表示奶牛,直线表示逃离路线

输入

第1行:

两个整数r,c,用1个空格隔开,表示矩形的行数和列数(均不超过50)。

第2行:

一个整数n,表示奶牛的个数(不超过100)。

第3到n+2行:

共n行,每行有两个整数,之间用1个空格隔开,分别表示这头奶牛所在的行和列。

输出

如果这块土地是安全的,输出0。

如果移走任意一头奶牛这块土地还是不安全,输出-1。

否则输出1,并且在下一行输出移走的那头奶牛的编号,如果有多个奶牛满足要求,输出输入序列中编号最小一个。

样例

EVAC.IN

55

5

11

24

31

22

21

EVAC.OUT

1

表达式的转换(难度系数★★★)

源程序名   express.?

(PAS,C,CPP)

可执行文件名express.exe

输入文件名  express.in

输出文件名express.out

[问题描述]:

平常我们书写的表达式称为中缀表达式,因为它将运算符放在两个操作数中间,许多情况下为了确定运算顺序,括号是不可少的,而中缀表达式就不必用括号了。

后缀标记法:

书写表达式时采用运算紧跟在两个操作数之后,从而实现了无括号处理和优先级处理,使计算机的处理规则简化为:

从左到右顺序完成计算,并用结果取而代之。

例如:

8–(3+2*6)/5+4可以写为:

8326*+5/–4+

其计算步骤为:

8326*+5/–4+

8312+5/–4+

8155/–4+

83–4+

54+

9

编写一个程序,完成这个转换,要求输出的每一个数据间都留一个空格。

[输入]:

就一行,是一个后缀表达式。

输入的符号中只有这些基本符号“0123456789+-*/^()”,并且不会出现形如2*-3的格式。

表达式中的基本数字也都是一位的,不会出现形如12形式的数字。

所输入的字符串不要判错。

[输出]:

若干个中缀表达式,第I+1行比第I行少一个运算符和一个操作数,最后一行只有一个数字,表示运算结果。

运算的结果可能为负数,“/”以整除运算。

并且中间每一步都不会超过2^31。

[样例]:

express.in

8–(3+2*6)/5+4

express.out

8312+5/–4+

8155/–4+

83–4+

54+

9

到天宫做客

源程序名   HEAVEN.?

可执行文件名HEAVEN.exe

输入文件名  HEAVEN.in

输出文件名HEAVEN.out

有一天,我做了个梦,梦见我很荣幸的接到了猪八戒的邀请,到天宫陪他吃酒。

我犹豫了。

天上一日,人间一年啊!

当然,我是个闲人,一年之中也没有多少时日是必须在人间的,因此,我希望选一个最长的空闲时间段,使我在天上待的时间尽量长。

记住,今年是4000年。

天上一天也是24小时,每小时60分,每分60秒。

输入文件的第一行是一个非负整数N,表示4000年中必须呆在人间的天数,以下共N行,每行两个用空格隔开的正整数,即日期(月,日),输入文件保证无错误,日期无重复。

输出文件仅有一行包含一个非负整数,即在天上的时间(四舍五入精确到秒)。

heaven.in

2

38

122

heaven.out

63266

第二套

奶牛卧室

源程序名BED.?

可执行文件名BED.EXE

输入文件名BED.IN

输出文件名BED.OUT

奶牛们有一个习惯,那就是根据自己的编号选择床号。

如果一头奶牛编号是a,并且有0..k-1一共k张床,那么她就会选择amodk号床作为她睡觉的地点。

显然,2头牛不能睡在一张床上。

那么给出一些奶牛的编号,请你为她们准备一间卧室,使得里面的床的个数最少。

第一行是奶牛的个数n(1<

=n<

=5000);

第2到第n+1行是每头奶牛的编号Si(1<

=Si<

=1000000)。

仅一行,是最少的床的数目。

BED.IN

4

6

10

13

BED.OUT

8

进制转换

源程序名   change.?

可执行文件名change.exe

输入文件名  change.in

输出文件名change.out

请你编一程序实现两种不同进制之间的数据转换。

输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>

10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

输出仅一行,包含一个正整数,表示转换之后的m进制数。

样例:

change.in

16

FF

change.out

11111111

硬币翻转

源程序名   coin.?

可执行文件名coin.exe

输入文件名  coin.in

输出文件名coin.out

在桌面上有一排硬币,共N枚,每一枚硬币均为正面朝上。

现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N-1枚硬币(正面向上的被翻转为反面向上,反之亦然)。

求一个最短的操作序列(将每次翻转N-1枚硬币成为一次操作)。

输入只有一行,包含一个自然数N(N为不大于100的偶数)。

输出文件的第一行包含一个整数S,表示最少需要的操作次数。

接下来的S行每行分别表示每次操作后桌上硬币的状态(一行包含N个整数(0或1),表示每个硬币的状态:

0——正面向上,和1——反面向上,不允许出现多余空格)。

对于有多种操作方案的情况,则只需输出一种。

coin.in

coin.out

0111

1100

0001

1111

拱猪计分

源程序名   HEART.?

可执行文件名HEART.exe

输入文件名  HEART.in

输出文件名HEART.out

拱猪是一种很有趣的扑克牌游戏。

即使你不知道它的玩法,你也可以由它的计分方式来了解它的趣味性。

假设在此我们仅考虑四个人的拱猪牌局,本题要求你根据下面的计分规则,在牌局结束时计算四位玩家所得分数。

1.我们分别以S、H、D及C来代表黑桃,红心,方块及梅花,并以数字1至13来代表A、2、…、Q、K等牌点,例如︰H1为红心A,S13为黑桃K。

2.牌局结束时,由各玩家持有的有关计分的牌(计分牌)仅有S12(猪),所有红心牌,D11(羊)及C10(加倍)等16张牌。

其它牌均弃置不计。

若未持有这16张牌之任一张则以得零分计算。

3.若持有C10的玩家只有该张牌而没有任何其它牌则得+50分,若除了C10还有其它计分牌,则将其它计分牌所得分数加倍计算。

4.若红心牌不在同一家,则H1至H13等13张牌均以负分计,其数值为-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。

而且S12与D11分别以-100及+100分计算。

5.若红心牌H1至H13均在同一家,有下列情形︰

o所有红心牌以+200分计算。

o若S12、D11皆在吃下所有红心牌之一家,则此玩家得+500分。

o而C10还是以前面所述原则计算之。

例一:

若各玩家持有计分牌如下:

(每列代表一玩家所持有之牌)

S12H3H5H13

D11H8H9

C10H1H2H4H6H7

H10H11H12

则各家之得分依序为:

-148、+83、-138及-60。

例二:

(第四家未持有任何计分牌)

H1H2H3H4H5H6H7H8H9H10H11H12H13

S12C10

D11

+200、-200、+100及0。

例三:

若有一玩家持有所有16张计分牌,则得+1000分。

其余三家均得零分。

输入:

每个输入文件由多组测试数据构成,每组测试数据有四行,每一行第一个数为该玩家所持有计分牌总数,而后列出其所持有之所有计分牌,牌数与各计分牌均以一个以上的空格分开。

相邻两组测试数据之间不会有空白行,读到四家持牌数都为0表示文件结束。

输出:

每一行输出一组测试数据对应的结果,依次输出各家所得分数,共四个整数(含正负号,0除外),相邻两个整数之间以一个空格分开,符号和数字间不可以有空格。

每组输出间不需要有空白行。

HEART.IN

4S12H3H5H13

3D11H8H9

6C10H1H2H4H6H7

3H10H11H12

13H1H2H3H4H5H6H7H8H9H10H11H12H13

2S12C10

1D11

HEART.OUT

-148+83-138-60

+200-200+1000

第三套

车厢重组(难度系数☆)

源程序名   carry.?

可执行文件名carry.exe

输入文件名  carry.in

输出文件名carry.out

在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。

一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。

于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。

他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。

输入文件有两行数据,第一行是车厢总数N(不大于10000),第二行是N个不同的数表示初始的车厢顺序。

一个数据,是最少的旋转次数。

carry.in

4321

carry.out

阶乘问题

源程序名   fact.?

可执行文件名fact.exe

输入文件名  fact.in

输出文件名fact.out

也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如:

12!

=1x2x3x4x5x6x7x8x9x10x11x12=479,001,600

12的阶乘最右边的非零位为6。

写一个程序,计算N(1<

=N<

=50,000,000)阶乘的最右边的非零位的值。

注意:

10,000,000!

有2499999个零。

仅一行包含一个正整数N。

单独一行包含一个整数表示最右边的非零位的值。

fact.in

12

fact.out

子数整数

源程序名   num.?

可执行文件名num.exe

输入文件名  num.in

输出文件名num.out

对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:

sub1=a1a2a3

sub2=a2a3a4

sub3=a3a4a5

例如,五位数20207可以拆分成

sub1=202

sub2=020(=20)

sub3=207

现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除。

输入由键盘输入,输入仅一行,为正整数K(0<

K<

1000)。

输出到文件,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。

不得重复输出或遗漏。

如果无解,则输出“No”。

num.in

15

num.out

22555

25555

28555

30000

垃圾陷阱

源程序名WELL.?

可执行文件名WELL.EXE

输入文件名WELL.IN

输出文件名WELL.OUT

卡门——农夫约翰极其珍视的一条Holsteins奶牛——已经落了到“垃圾井”中。

“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<

=D<

=100)英尺。

卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。

另外,卡门可以通过吃一些垃圾来维持自己的生命。

每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。

假设卡门预先知道了每个垃圾扔下的时间t(0<

t<

=1000),以及每个垃圾堆放的高度h(1<

=h<

=25)和吃进该垃圾能维持生命的时间f(1<

=f<

=30),要求出卡门最早能逃出井外的时间,假设卡门当前体内有足够持续10小时的能量,如果卡门10小时内没有进食,卡门就将饿死。

第一行为2个整数,D和G(1<

=G<

=100),G为被投入井的垃圾的数量。

第二到第G+1行每行包括3个整数:

T(0<

T<

=1000),表示垃圾被投进井中的时间;

F(1<

=F<

=30),表示该垃圾能维持卡门生命的时间;

和H(1<

=H<

=25),该垃圾能垫高的高度。

如果卡门可以爬出陷阱,输出一个整表示最早什么时候可以爬出;

否则输出卡门最长可以存活多长时间。

WELL.IN

204

549

932

12610

1311

WELL.OUT

[样例说明]

卡门堆放她收到的第一个垃圾:

height=9;

卡门吃掉她收到的第二个垃圾,使她的生命从10小时延伸到13小时;

卡门堆放第3个垃圾,height=19;

卡门堆放第4个垃圾,height=20。

提高组

低价购买

源程序名   BUYLOW.?

可执行文件名BUYLOW.EXE

输入文件名  BUYLOW.IN

输出文件名BUYLOW.OUT

“低价购买”这条建议是在奶牛股票市场取得成功的一半规则。

要想被认为是伟大的投资者,你必须遵循以下的问题建议:

“低价购买;

再低价购买”。

每次你购买一支股票,你必须用低于你上次购买它的价格购买它。

买的次数越多越好!

你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数。

你将被给出一段时间内一支股票每天的出售价(216范围内的正整数),你可以选择在哪些天购买这支股票。

每次购买都必须遵循“低价购买;

再低价购买”的原则。

写一个程序计算最大购买次数。

这里是某支股票的价格清单:

日期123456789101112

价格686954646864706778629887

最优秀的投资者可以购买最多4次股票,可行方案中的一种是:

日期25610

价格69686462

第1行:

N(1<

=N<

=5000),股票发行天数

第2行:

N个数,是每天的股票价格。

输出文件仅一行包含两个数:

最大购买次数和拥有最大购买次数的方案数(<

=231)当二种方案“看起来一样”时(就是说它们构成的价格队列一样的时候),这2种方案被认为是相同的。

BUYLOW.IN

686954646864706778629887

BUYLOW.OUT

42

棋盘游戏(game)

源程序名game.?

可执行文件名game.exe

输入文件名game.in

输出文件名game.out

时限2s

在一个4*4的棋盘上有8个黑棋和8个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的。

移动棋子的规则是交换相邻两个棋子。

现在给出一个初始棋盘和一个最终棋盘,要求你找出一个最短的移动序列使初始棋盘变为最终棋盘。

Klux说:

“这么简单的题目,我都会做!

第1到4行每行四个数字(1或者0),描述了初始棋盘

接着是一个空行

第6到9行每行四个数字,描述了最终棋盘

输出文件的第一行是一个整数n,表示最少的移动步数。

接下来n行每行4个数,r1,c1,r2,c2,表示移动的两个棋子的坐标(r1,c1),(r2,c2)(棋盘左上角的坐标为(1,1),并且他右边的格子为(1,2))

如果有许多组解,你可以输出任意一组。

game.in:

0000

1110

0010

1010

0101

game.out

1222

1424

3242

4344

说明:

翻译自ceoi99-game,数据及解答由ceoi提供。

求正整数

源程序名   INT.?

可执行文件名INT.EXE

输入文件名  INT.IN

输出文件名INT.OUT

对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m。

n=4,则m=6,因为6有4个不同整数因子1,2,3,6;

而且是最小的有4个因子的整数。

n(1≤n≤50000)

m

INT.IN

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

当前位置:首页 > PPT模板 > 其它模板

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

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