“讯飞杯”合肥市第二十八届青少年信息学奥林匹克竞赛(小学组)解题报告
时间:2025-07-01
时间:2025-07-01
“讯飞杯”合肥市第二十八届青少年信息学奥林匹克竞赛(小学组)解题报告
胡周国
2011年11月26日 14:00-16:30 (请选手务必仔细阅读本页内容)
一、题目概况
二、注意事项
1. 考试时间为150分钟。 2. 务必看清题目,严格按照所要求的格式输入、输出。 3. 在调试程序时请先使用题目中的示例数据,然后再自行设计多组测试数据进行调试。
4. 每题一般有10个测试点,测试有严格的时间限制,请尽可能优化算法。 5. 命名规则:
(1)每题都规定了该题的英文名称。
(2)程序文件和数据文件的主文件名都是该题的英文名字。
(3)程序文件扩展名采用语言环境的默认扩展名。 (4)数据文件都是文本文件,输入和输出文件的扩展名分别是.in和.out。 6. 程序应从输入文件读取数据,并严格地按照规定的输出格式将结果输出到输出文件中。输入数据文件和输出数据文件都与程序在同一个目录中,由于程序所在目录是不确定的,因此不允许在文件名中含有盘符信息和任何形式的路径信息。 7. 选手在竞赛结束时应在D盘的根目录下建立以准考证号命名的文件夹,并将所完成各题的源程序文件和可执行文件拷贝到该文件夹中。
1.聪聪买书
(book.bas/book.pas/book.c)
【问题描述】
圣诞节快到了,聪聪准备给他的好朋友们买些小礼
物。当然,聪聪知道这些好朋友们都非常喜欢看漫画书,所以,聪聪就决定买些好看的漫画书送给他们。经过一段时间的调查,聪聪发现有3种买书的方式:
1 .书店现场购买:10元/本,超过5本以外的,8元/本,超过10本以外的,则6.5元/本;
2.网上购买:9元/本,超过10本,全部打8折,超过50本,则全部打六折;
3.团购:10本起团购,7元/本,达到或超过30本,则6元/本,达到或超过50本,则5元/本。
聪聪想用其中一种方式购n本书,请你帮他计算应付多少元钱? 【输入文件】
输入文件只有1行为两个数k和n,中间以一个空格隔开 其中k表示选择的购买方式(k=1表示书店现场购买,k=2表示网上购买,k=3表示团购),n表示购买的本数(n<=200)。 【输出文件】
应付钱数(结果四舍五入保留到个位) 【输入输出样例】
【数据说明】
保证输入数据符合题目要求。
这题就是考我们对for循环的掌握和题目的理解能力。还要考虑到是这个编程软件是四舍五入,还是五舍六入。 程序如下:
var k,n,i,j:longint; s:real;
“讯飞杯”合肥市第二十八届信息学奥林匹克竞赛 begin
assign(input,'book.in'); assign(output,'book.out'); reset(input); rewrite(output); readln(k,n); if k=1 then begin
if n<=5 then s:=n*10 else
if n<=10 then s:=(n-5)*8+50 else
s:=(n-10)*6.5+90; end; if k=2 then begin s:=n*9; if n>50 then s:=s*0.6 else
小学组
“讯飞杯”合肥市第二十八届信息学奥林匹克竞赛 小学组
if n>10 then s:=s*0.8; end; if k=3 then begin
if n>=50 then s:=n*5 else
if n>=30 then s:=n*6 else
if n>=10 then s:=n*7; end;
write(s+0.1:0:0); close(input); close(output); end.
但这次是四舍五入的软件,所以只得了90分,后来听老师讲了一不管他是五舍六入还是四舍五入。那就是trunc(s+0.5)。 程序如下:
var k,n,i,j:longint; s:real; begin
assign(input,'book.in'); assign(output,'book.out'); reset(input); rewrite(output); readln(k,n); if k=1 then begin
if n<=5 then s:=n*10 else
if n<=10 then s:=(n-5)*8+50 else
s:=(n-10)*6.5+90; end; if k=2 then begin s:=n*9; if n>50 then
s:=s*0.6 else
if n>10 then s:=s*0.8; end; if k=3 then begin
if n>=50 then s:=n*5 else
if n>=30 then s:=n*6 else
if n>=10 then s:=n*7; end;
write(trunc(s+0.5)); close(input); close(output); end.
2.魅力镜片
(magic.bas/magic.pas/magic.c)
【问题描述】
由于聪聪一次性购买的书比较多,所以客气的书店老
板免费赠送一块好玩的镜片给聪聪玩。一段时间以后,聪聪发现这块镜片真的不简单:只要我们随便在纸上写一个整数,经过这个镜片一照,组成这个整数的各位数字顺序就会反转,得到一个新数,当然,神奇的不仅是这些,镜片产生的新数依然符合整数的常见情形,即除非给定的整数为零,否则反转得到的新数最高位数字不能为0。
好奇的聪聪大胆猜测这个镜片中肯定有些智能化的东
西。但是,这个东西到底是怎么实现的呢?聪聪想用计算机程序来模拟这一功能,于是,他就找到了擅长编程的你,请你帮助聪聪来解决这一问题。 【输入文件】
输入共一行,一个整数N。 【输出文件】
输出共一行,表示经镜片反转后得到的新数。 【输入输出样例1】
【输入输出样例2】
【数据范围】
-1,000,000,000≤N≤1,000,000,000。
这题就是要把他用字符串判‘-’,预处理末尾的‘0’,然后反过来输出。 程序如下:
var i,j,k:longint; …… 此处隐藏:2936字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:数学竞赛辅导讲义——圆幂与根轴
下一篇:经济法第三章练习及答案