加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

(NOIP2011)

(2012-03-06 18:06:09)
标签:

果子

问题描述

信息学奥林匹克

箱子

教育

分类: freepascal普及组试题

第一题:得分计算器(t1.pas)

【问题描述】

    学校举行校园歌曲演唱赛,共设7个评委,去掉一个最高分,去掉一个最低分,其余评

委的平均分即为选手的最终得分。试编程,输入7个评委的分数后,输出选手的最终得分。

(顶格输出,保留一位小数)

【输入文件】

    输入文件为t1.in,共1行,输入7个评委的分数。

【输出文件】

  输出文件为t1.out,输出文件只有1行,即为此选手的最终得分。

【样例输入】

8    6    7.5    5    8.5    9    7

【样例输出】

7.4

 

第二题:圣经数(t2.pas)

【问题描述】

    人们把l 5 3叫做“圣经数”,因为1 5 3具有一个有趣的性质:任写一个3的倍数,

把各位数字的立方(一个数的立方=三个该数相乘的结果,如53=5*5*5=125)相加,得出和,

再把和的各位数字立方相加,如此反复进行,最后则必然出现l 5 3

    例如:2 43的倍数,按照上述规则,进行变换的过程是:

    2423+437273+233513 3+5 3+13153

经过3次变换,153出现了!请编一程序,输入某一3的倍数,输出变换成153所需要的次

数。

【输入文件】

  输入文件为t2.in,从文件的第一行读入某一3的倍数。

【输出文件】

  输出文件为t2.out,输出文件只有一行,即为变换成153所需要的次数。

【样例输入】

12

5

 

三、数列计算(shulie.pas
[题目描述]: 王老师上数学课时,在黑板上给同学们写出了一串数字中的前四个数字是:1987,并告诉同学们:“这串数字从第五个数起,每一个数都是它前面相邻四个数字之和的个位数字”,请同学们比试一下看哪位同学能很快地找出这串数的规律,然后打印输出这个数列的前N项,并计算前N项的和。
[
题目名称]shulie.pas
[
输入文件 文件名:shulie.in
文件中只有一行,包含1个整数N(其中5N20)
[
输出文件 文件名:shulie.out
文件中共有二行。第一行为这个数列的前N项;第二行为这个数列的前N项的和。
要求:每一行的输出数据都从第一列开始,各数据项之间空2格。
[
样例输入]:  shulie.in的内容为:
10
[
样例输出]shulie.out的内容为:
1
52

四、装箱问题

提交文件:(box.pasbox..bas) / box.exe

问题描述:

    元旦到了,李明的班准备举行一个“庆祝元旦”活动,班主任叫李明到市场上去买水果,为了容易找到不同大小的果子(当然大小不同,重量也不同),要求将果子按重量分类装到箱子里,并要作一些统计。一共有N个箱子,分别编号为1,2,……,N。也已经称出每个果子的的重量(单位为G)。要求将果子分别装入编号为1,2,……,NN只箱子中去,装入的方法是:

0G<果子重量<100G       装入1号箱

100G<=果子重量<150G     装入2号箱

150G<=果子重量<200G     装入3号箱

……                      ……

以此类推。装完以后,要求找出哪只箱子中的果子个数最多,若有相同的最多则要求全部列出(仅列出箱子的号数即可),若因果子太重无箱子可装,也应输出这类果子的个数,如果没有这样的果子,则这类果子的个数为0

因为他们买了许多果子,现在请你编程帮小明作有关的统计。

 

数据输入

从文件box.in中读入数据,文件中共有若干行,第一行是一个数N表示箱子的个数(1<=N<=1000),接下来若干行,每行一个正整数,表示果子的重量,最后一个是0,表示文件结束。

数据输出

将结果输出到文件box.out,文件包含两行,第一行有若干个数,表示果子个数最多的箱子的编号,第二行是一个数,表示果子太重无箱子可装的果子的个数。

 

 

输入输出样例

box.in

4

5

240

3

200

0

box.out

1  4

 

第五题、电脑老师让小慧编程做一道题:输入一个正整数A(A≤100000000),如果A的个位数字是5,则统计A能被5整除多少次?否则,统计A当中含有多少个“0”?你能做吗?

【输入文件】

  输入文件为t5.in,从文件的第一行读入一个整数N0<=N<=1000000000000000)。

【输出文件】

  输出文件为t5.out,输出文件只有一个符合要求的整数。

校例1:输入:125           

    输出:3                      

样例2:输入:305160

输出:2

第六题:一万天纪念日(t3.pas)

【问题描述】

    “一万天以后的我”征文活动即将开始。小马的同学都想知道自己出生后第一万天纪念

日的日期(出生曰算第0)。同学们的生日为YYMMDD日,小马希望编一程序,

输入某同学的生日YYMMDD后,即可输出一万天纪念日日期。

【输入文件】

    输入文件为t3.in,从文件的第一行分别读入YYMMDD,其中1949<=YY<=2005

日期绝对合法。

【输出文件】

    输出文件为t3.out,输出文件只有一行,即某同学出生日以后第一万天的日期,格式为“YYMMDD"

【样例输入】

1975  7  15

【样例输出】

200211-30

 

第七题、泽泽在中国(china.pas

 [问题描述]

  众所周知,在中国有个地方叫万里长城
  泽泽一天上山玩,在捉蟋蟀的时候,忽然看见一个奇怪的洞。泽泽好奇,就钻了进去,结果……
  泽泽来到中国万里长城上。长城的城墙很高,泽泽翻墙翻不出去。后面的路又被堵住了,于是泽泽只有一个选择:向前走。
泽泽向前一看,看见一块牌子,牌子上写道:
  若要离开此地,就爬出长城吧。
  泽泽无语。平时泽泽最不擅长的就是长跑,现在天不遂人愿,他遇上了麻烦。但是没有别的去路,于是他硬着头皮爬起来。
   
泽泽爬一个单位距离需要一个单位时间。但是这座长城年久失修,地上出现了很多的坑和杂草堆。泽泽在这些地方爬行需要更长的时间。
  现在泽泽知道这座长城的长度,以及哪些地方有坑和杂草堆,请算出泽泽需要多少时间才能爬出长城。

输入

12个整数sns表示长城的长度,n表示有多少坑和杂草堆。之后的n行,每行3个整数aibiti。表示从aibi的一段每个单位距离泽泽需要ti的时间。泽泽在没有坑和杂草堆的地方每个单位距离需要时间1。(保证长度没有重合的)

输出

一个整数,即泽泽爬出的时间。

输入样例:data.in

20 5

2 4 2

6 7 4

8 10 2

11 11 5

17 20 5

输出样例:data.out

52

 

题目提示

这座长城泽泽需要走的时间的模拟图:

1 2 2 2 1 4 4 2 2 2 5 1 1 1 1 1 5 5 5 5

【数据规模】
对于30%的数据,s<=50000n<=100
对于100%的数据,s<=2000000000n<=500000
(保证最后结果不超过maxlongint

 

第八题  精挑细选(BEST.PAS)

【问题描述】

    小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下:

1、  这根钢管一定要是仓库中最长的;

2、  这根钢管一定要是最长的钢管中最细的;

3、  这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。

相关的资料倒是有,可是,手工从几百份钢管材料中选出符合要求的那根……

要不,还是请你编写个程序来帮他解决这个问题吧。

【输入文件】

    文件名:BEST.IN

    文件第一行为一个整数 ( ),表示仓库中所有钢管的数量。

    之后 行,每行三个整数,分别表示一根钢管的长度(以毫米为单位)、直径(以毫米为单位)和编码(一个9位整数)。

【输出文件】

    文件名:BEST.OUT

    文件中只有一个9位整数,表示选出的那根钢管的编码。

【样例输入】

4

3000 50 872198442

3000 45 752498124

2000 60 765128742

3000 45 652278122

【样例输出】

752498124

 

第九题、泽泽在英国(england.pas)

[问题描述]

  泽泽用了100000000000000000000 mod 10天的时间爬出了长城。长城的另一端是一条隧道,泽泽走了进去……
  泽泽不小心又到了英国。英国多雨,基本上隔2天就要下一场雨。泽泽人品不好,到这里的时候天正在下酸雨。
  酸雨会腐蚀建筑物,让那些建筑物显得很难看。英国有家工厂免费为一条街道的建筑物的墙面涂油漆。心肠虽好,但是由于技术问题,他们只能涂出一个矩形。现在由于酸雨事态严重,街道办主任下命令涂出面积最大的矩形。
街道上的建筑物高度参差不齐,那该怎么办呢?
  他们想到了泽泽。
  泽泽接到了这个任务,就去测量了这个街道上的所有建筑物的高度。
  请根据泽泽的数据,计算出最大面积。

输入:

11个整数n。表示有几幢楼。之后的一行有n个整数,表示第几幢楼的高度,最高的楼的高度为m

输出:

一个整数,制作防护板的最大面积。

输入样例:data.in

 

20
5 3 7 4 8 9 2 4 5 5 5 4 4 4 8 7 4 4 5 10

 

输出样例: data.out

 

52
 
题目提示
最大面积为如图灰色部分所示 :
http://s9/middle/5ef0a0c5hba9037dff278&690

 

第十题   排队(QUEUE.PAS)

【问题描述】
   
婷婷是一个喜欢跳舞的女孩儿,还报了一个专门学习跳舞的班呢.
在入学的时候,老师让大家根据自己的身高排了一下队,个子小的同学排前面,后面的同学,先后顺序随意.
如果给你这些同学的身高数据,你能计算一下婷婷最前可以排第几、最后可以排第几么?

【输入文件】
文件名:QUEUE.IN
文件第一行是一个整数n(1<=n<=30),表示跳舞班所有同学的人数。
 
第二行是n整数,表示所有同学的身高,以厘米为单位。这Nwh 同学的数据,包括婷婷本人的。
 
第三行是一个整数,表示婷婷的身高。
【输出文件】
文件名:QUEUE.OUT
文件中只有两个整数,用空格分开。分别表求:从前面数,婷婷可能排的最前的位置和最后的位置。
 
【样例输入】
   8
   133  134  132  133  131  130  138  133
   133
 
【样例输出】
   6

第十二题   数学等式

(文件名:equal.pas/equal.exe 输入文件名:equal.in 输出文件名:equal.out

【问题描述】

今天老师布置的作业上,有这样一个数学等式填空题:

给出用等号连接的两个整数,如“153449”。当然,现在这个等式是不成立的。题目让你在左边的整数中间某个位置插入一个加号,看有没有可能让等号成立。以上面的式子为例,如果写成15+34=49,等式就成立。

请你编写一个程序来解决它。

【输入】

文件equal.in中只有一行数据,那个不成立的等式。已知,等号两边的整数都不会超过2000000000

【输出】

把答案输出到文件equal.out中。

如果存在这样的方案,请输出那个正确的式子,若有多种方案,请依照加号插入的顺序输出,一个一行。如果不存在解决方案,请输出“Impossible!”(引号中的部分)。

【样例输入】

   Equal.in

1111=112

【样例输出】

Equal.out

1+111=112

111+1=112

第十三题 整数拆段

【问题描述】

将一个位数为L4≤L≤10)的自然数N拆成4段,使各段对应的数的乘积最小。你能编一个程序实现吗?

 【输 入】:文件NUM.IN中只有一个自然数N(0<N<2000000000)

 【输 出】:文件NUM.OUT中只有一个整数,表示最小乘积。

 【样例输入】:                    

321427                                      

【样例输出】:

 2268

注:3*2*14*27=2268  

 

 

14  灯的开关状态(lamp.pas)

问题描述】

  N个灯放在一排,从1N依次顺序编号。有N个人也从1N依次编号。1号将灯全部关闭,2将凡是2的倍数的灯打开;3号将凡是3的倍数的灯作相反处理(该灯如为打开的, 则将它关闭;如关闭的,则将它打开)。以后的人都和3号一样,将凡是自己编号倍数的灯作相反处理。

编程实现:第N个人操作后,按顺序输出灯的状态。(1-表示灯打开,0-表示灯关闭)

【输入】

    输入文件lamp.in只包含一个数 n,灯的个数。

【输出】

    输出文件lamp.out灯的状态,01序列,中间无空格。

【输入输出样例】

Lamp.in

lamp.out

2

01

 

第十五题    【回文数个数】(HWST.PAS)

[问题描述]  如果一个正整数从左向右读与从右向左读均是一样,则称其为回文数。例如3121322312021都是回文数。
【输入】任意给定的一个正整数n0<n<=2000000000
输出一个正整数,表示[1n]之间的回文数的个数。
【输入格式】data.in ,无须合法性检验.
【输出格式】data.out
【样例】
  
输入

 325                                                            

输出

41

第十六题 国王的魔镜 (MAGIC.EXE/ MAGIC.PAS)

【问题描述】

    国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。

    比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。

    给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。

【输入文件】

    文件名:MAGIC.IN

    文件中只有一个字符串,由大写英文字母组成,表示最终的项链(字符串长度小于500)

【输出文件】

    文件名:MAGIC.OUT

    文件中只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。

【样例输入】

ABBAABBA

【样例输出】

2

 

第十七题   找最长良序字符串(jst.EXE/ jst.PAS)


【问题描述】
     
我们将“ABC”或“ACEG”等类似的字串称为良序字串(因为它们是按ASCII码排列的),而像“ACB”或“ACCD”或“AGCD”则不可称为良序字串。
编写程序,将键入的一串字符中的最长良序字串找出来,并输出其长度。
 【输入文件】:文件名jst.in  表示一串字符(长度≤30)。
 
【输 出】:文件名jst.out   表示可以找出的一个最长良序字串的长度。
 
【样例输入】:

2345135791246823456  

 【样例输出】:

           5

 

第十八题   进制数(jsjz.EXE/ jsjz.PAS)

【问题描述】

给出一个正整数n1N1023),将其化为10位二进制数,然后计算出二进制数中的“1”的个数,若1的个数为奇数,则在最高位前加上一个1,否则加上一个0,最后将在此基础上形成的11位二进制数,用3个十六进制数输出。
 
例如,输入23 化为二进制数为: 0000010111

因为这二进数“1”的个数是4个,在最高位前加0,得到:00000010111
          
输出:0H1H7H
 
再例如:输入 453   化为二进制数为: 0111000101
                
因为1的个数是奇数,所以在最高位前加1,得到:10111000101
          
输出:5HCH5H        
【输入文件】 文件名:jsjz.in

文件中只有一个数,表示一个十进制数.

【输出文件】文件名:jsjz.out

文件中有三个十六进制数,每个数用一个空格分开,表示11位二进制数形成的三个十六进制数.

 【样例输入】

453    
【样例输出】

 5H  CH  5H
合唱队形(QUEUE.PAS

 

第十九题  合唱队型 (queue.EXE/ queue.PAS)
【问题描述】

茵茵所在的合唱队共有 个人( 为奇数)。为了准备一次演出,老师开始为她们安排合唱队形了。

大家都知道,合唱队形通常是中间高两端低的。老师是这样安排他们的队形的:先让所有的同学按高个儿在前的顺序排成一队。然后,最高的那位同学单独站出来,这是合唱队形的中心,再让第二位同学站在她的左手边,让第三位同学站在她的右手边,再依次向两端安排其他人……

 事先给定所有人的身高,请输出她们站成合唱队形之后的身高顺序。

【输入文件】

    文件名:QUEUE.IN

    文件第一行是一个整数 ,表示合唱队的总人数,已知 为奇数,且 。

    文件第二行是 个整数,表示以厘米为单位的所有人的身高。

【输出文件】

    文件名:QUEUE.OUT

    文件中只有 个整数,表示她们按老师的要求站成合唱队形之后的身高顺序。

【样例输入】

7

154 160 157 162 159 152 163

【样例输出】

152 157 160 163 162 159 154

 

第二十题 中间数(Med.pas/med.exe

问题描述

在统计学的世界中,中间数(median)扮演一个重要的角色。 根据定义:中间数就是在一连串已由小到大排序的数字中,排在中间的那一个数。例如:在{1,3,4,9,11}4就是中间数。若有偶数个数字,我们定义中间数就是位于中间的那2个数的和除以2(而且只取整数部分)。例如:在{1,2,3,6,7,8}{3,6}是位于中间的2个数,所以中间数就是(3+6)/2=4

 

输入文件

输入文件med.in第一个为整数NN<=30000),表示有N个整数。

从第二行开始,有N个整数,有一空格隔开。

 

输出文件

输出文件med.out仅一行,输出这些数的中间数。

 

样例数据

Media.in

6

1 3 4 2 3 27

 

Media.out

3

第二十一题  智力冲浪(100分)(brains.pas/ brains.exe

小慧准备参加湖南电视台举办的智力冲浪节目。规则如下:

冲浪者首先拥有m个快乐金球。冲浪当中设有n个游戏项目,每个游戏项目都必须在整分钟时开始,限时1分钟,而且都规定了最后完成期限(即:冲浪开始t分钟内必须完成)。如果一个游戏项目没按规定完成,则从冲浪者的快乐金球中扣掉一部分,不同游戏项目扣掉的金球数也不同。游戏项目的顺序自己安排。最终,赢得快乐金球数最多的选手胜出。

小慧非常想夺得冠军,请你计算出小慧最多能赢得多少个快乐金球?

输入三行:第一行有两个数m nm10000n50)分别表示开始时拥有的M个金球,n表示高有N个游戏项目。

n个整数(以空格相隔),分别表示每个游戏项目规定的完成期限(0n

n个整数(以空格相隔),分别表示每个游戏项目未完成时扣掉的金球数

输出:一个整数(最多能赢得快乐金球的个数)

例如:输入:10000 7

       4   2   4   3   1   4   6

   20  60  70  40  30  50  10

输出:9950

 

 

第二十二 题 隐藏的最大整数 (HIDE.EXE/ HIDE.PAS)

【问题描述】

今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏!

玩法很简单,就是从所有人中找出一部分藏在一个长长的字符串中(任何两个人都不会并排藏在一起),而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了……

游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了……

   如果你是“1”,你能写个程序来解决这件事情么?

【输入文件】

    文件名:HIDE.IN

    文件中只有一个字符串,这里面藏有很多的整数小伙伴。

【输出文件】

    文件名:HIDE.OUT

    文件中只有一个整数,表示藏在其中的最大的那个整数小伙伴的位置(整数第一个数字在原串中的位置)。

    已知,所有的小伙伴都不会超过2000000000

【样例输入】

*((*-a32AB342+//32143abAA

【样例输出】

17

 

 

第二十三题      ( BRICK.PAS)

【问题描述】

    在一个矩形的坑的底部,无缝地铺了一层积木(为简单起见,本题中,用矩形表示积木),如下图所示(阴影部分表示地,中空的部分表示坑,所有的白色矩形都表示坑底的积木):

    现在,我们要在这个坑中再放入一块正方形积木,但我们希望这块积木的位置最低。如下图所示,左图中的灰色积木的位置就比右图中灰色积木的位置更好(本题不考虑重力因素,假定新放入的积木不会倾倒,它的边永远平行于坑壁)。而且,可以看出,左图中灰色方块的位置是所有可能的位置中最低的位置(本题中,假定坑足够宽也足够深,后加的那块积木不会放不进去)。


 

 

 

 

 

 

 

 

 


    如果事先给定所有事先铺好的积木的信息和后加的积木的信息,请编写程序寻找一下它的最低位置。

【输入文件】

    文件名:BRICK.IN

    文件第一行为一个整数 ( ),表示坑底积木的数量。

    之后 行,每行两个整数,依次表示从左至右的每块积木的宽度和高度(以厘米为单位)。

    最后一行中还有一个整数 ,表示后加的积木的边长(以厘米为单位)。

【输出文件】

    文件名:BRICK.OUT

    文件中只有一个整数,表示将后加的积木放入坑中最低位置之后,它的上沿距离坑底地面的高度。

【样例输入】

2

10 40

15 60

20

【样例输出】

80

 

 

 

 

 

 

 

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有