2010程序设计竞赛上机试题2

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2010年小学生程序设计竞赛上机试题

注意事项:

请严格按题目要求,包括提交文件名、输入输出文件名,否则将严重影响得分。

1.旅行

(travel.pas)

【问题描述】

帅帅和随同爸爸一起开车去旅行。但是车上的里程表坏了,所以他们不知道他们行驶了多少英里?幸运的是,帅帅有一只完好的秒表,所以他们可以把汽车的速度和行驶总时间记录下来。然而,他们的记录方法有些奇怪。他们需要你帮忙计算他们驾驶的总路程。作为一个程序员,你打算写一个程序来完成这个任务。

这意味着他们有两个小时以20公里/小时的速度行驶,然后6-2=4小时里他们以30公里/小时的速度行驶,7-6=1小时里他们以10公里/小时的速度行驶。他们总共行驶过的路程为2*20 + 4*30 + 1*10 = 40 + 120 + 10 = 170公里。注意所有的驾驶时间都是从他们的旅行开始时开始计算的,而不是从他们之前的记录开始计算的。

【输入】

输入文件travel.in的第一行为一个整数n,1<=n<=10,接下来有n对数值,每行一对。第一个值s 是速度,第二个值t是行驶总时间。s和t都是整数,1<=s<=90,1<=t<=12。T总是按照严格递增的顺序输入的。

【输入】

输出文件travel.out包含一个整数,表示他们行驶了多少公里,最后用一个空格隔开,输出一个单词"miles"。

2.IP地址

(ipadress.pas)

【问题描述】

众所周知,在电话通讯中,电话用户是靠电话号码来识别的。同样,在网络中为了区别不同的计算机,也需要给计算机指定一个号码,这个号码就是“IP地址”。

所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特(bit)换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。

现在需要从文件中读入一串代表着IP地址的二进制数。你的任务是将一个由0和1组成的32位二进制串转化成一个“点分十进制表示法”IP地址。这样的IP地址应该由4个数组成,每个数依次代表这个二进制串的8个位。为了便于你将一个正二进制数转换为一个正十进制数,特别为你需要知道2的前8

【输入】

输入文件ipadress.in只有一行,为一个待转换的二进制串。

【输出】

输出文件ipadress.out只有一行,为一个转换后的带点的IP地址。

3.理发

(haircut.pas)

【问题描述】

帅帅是一位很爱观察、很爱思考的小学生。他家的正对面有一间理发店,经过观察他发现:理发店共有N(N<=255)位师傅给顾客理发,当然一个师傅一次只能为一个顾客服务,为一个人服务完了之后可以马上给另一个人服务。帅帅对于进出店内顾客情况作为很详细的记录,他用大写字母A..Z来表示不同的人,但现在的人们生活节奏很快,时间很宝贵,如果进来的顾客数量不大于理发店师傅的人数则所有的顾客都可以得到服务,但如果进来的顾客人数多于师傅人数,则意味着有些顾客会离开,因为他们不愿意等。你的任务是帮助帅帅计算有多少个顾客因得不到服务而离开?以便帅帅能够给理发店的老板一些建议。

【输入】

输入文件haircut.in为两行,第一行为一个数N。第二行为一串字符,其中的字母是成对出现的。每一对字母代表同一个客人,当然第一个代表他的到来第二个代表他的离去。字符串的长度不大于255。【输出】

输出文件haircut.out为一个数,如果每个顾客都能得到服务就输出0,否则就输出多少个客人因得不到服务而离去。

【样例解释】

对于样例1,前两位顾客A、B依次进来,时此刚好有两位师傅为他们服务,此后B、A相继离开,此时两位师傅处理空闲状态,第三位顾客J进来,理完发后离开。因此所有的顾客都得到了服务,输出0。

对于样例2,前三位顾客G、A、C,都能得到服务,因为店里有三位理发师傅,第三位顾客C 离开后,有一位师傅处于空闲状态,因此第四位顾客B也能得到服务,第五位顾客D进店后,发现三位师傅正在为顾客G、A、B理发,因此D会离开,此时D得不到服务,然后顾客B、A、G相继离开,整个过程结束。因此只有一位顾客D得不到服务,输出1。

4. 数学老师的难题

(problem.pas)

【问题描述】

学好数学是学好计算机的一个重要基础,毕竟早期计算机科学是数学科学的一个重要分支。帅帅也明白这个道理,因此,帅帅在学校既参加了数学兴趣班也参加了计算机兴趣班。但帅帅马上就要参加2010年东莞市小学程序设计竞赛了,因此就暂停了数学兴趣班的学习,数学老师知道后很生气,后果很严重,于是数学老师就给帅帅出了一个难题:统计两个正整数t1 , t2 ( t1 < t2 ) 之间的所有数的约数个数和S,这本是一个很简单的题目,但数学老师为了难倒帅帅,给出的两个数t1、t2的非常大,为10000000以内的正整数。但帅帅的编程能力还处于入门阶段,希望你能帮他解决这个问题?

【输入】

输入文件problem.in仅包含一行,共有两个整数,表示t1 t2 (用空格分开)

【输出】

输出文件problem.out仅有一个整数,表示t1 , t2之间的约数个数之和。

【样例解释】

2的约数有1,2共2个;

3的约数有1,3 共2个;

4的约数有1,2,4 共3个;

5的约数有1,5 共2个;

6的约数有1,2,3,6 共4个。

所以2到6 的约数个数为13

【数据规模】

对于50 %的数据,保证有t1,t2<=5000000

对于全部的数据,保证有t1,t2<=10000000

相关文档
最新文档