2017年海淀区信息学竞赛小学组试卷.pdf_第1页
2017年海淀区信息学竞赛小学组试卷.pdf_第2页
2017年海淀区信息学竞赛小学组试卷.pdf_第3页
2017年海淀区信息学竞赛小学组试卷.pdf_第4页
2017年海淀区信息学竞赛小学组试卷.pdf_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2017 年海淀区中小学生信息学奥林匹克竞赛年海淀区中小学生信息学奥林匹克竞赛 1 / 5 2017 年海淀区中小学生信息学奥林匹克竞赛年海淀区中小学生信息学奥林匹克竞赛 小学组竞赛试题(每题小学组竞赛试题(每题 100 分,共分,共 700 分分) 答题答题注意注意事项事项: (1)请使用 QBASIC(BC7.0 版本)或 C/C+(DEVC+5.11 版本)语言编程环境; (2)以各自题目要求的名称(如:isbn.bas/或 isbn.c/或 isbn.cpp)命名保存源文件; (3)输入输出均采用文件读写,将写好的源文件保存入 D:TEST 文件夹中按要求提交。 如:D:TEST isbn.cpp number.cpp id.cpp stick.cpp 1、ISBN 码(100 分) (源文件名称:isbn.cpp/isbn.c/isbn.bas) 【题目描述题目描述】 每一本正式出版的图书都有一个 ISBN 码与之对应,ISBN 码包括 9 位数字、1 位识别 码和 3 个分隔符,其规定格式如“x-xxx-xxxxx-x” ,其中符号“-”就是分隔符(键盘上的减 号) ,最后一位是识别码,例如 0-670-82162-4 就是一个标准的 ISBN 码。ISBN 码的首位数 字表示书籍的出版语言, 例如 0 代表英语; 第一个分隔符 “-”之后的三位数字代表出版社, 例如 670 代表维京出版社; 第二个分隔符后的五位数字代表该书在该出版社的编号; 最后一 位为识别码。识别码的计算方法如下:首位数字乘以 1,加上次位数字乘以 2,以此 类推,第九位数字乘以 9,最后用所得的结果 mod 11,所得的余数即为识别码,如果余数为 10,则识别码为大写字母 X。例如 ISBN 号码 0-670-82162-4 中的识别码 4 是这样得到的: 对 067082162 这 9 个数字,从左至右,分别乘以 1,2,.,9,再求和,即 01+62+2 9=158,然后取 158 mod 11 的结果 4 作为识别码。 你的任务是编写程序判断输入的 ISBN 码中识别码是否正确,如果正确,则仅输出 “Right” ;如果错误,则输出你认为是正确的 ISBN 码。 【输入输入文文件件】文件名为:isbn.in 仅一行,一个字符串,表示一本书的 ISBN 码(输入保证符合 ISBN 码的格式要求) 。 【输出输出文件文件】文件名为:isbn.out 共一行,假如输入的 ISBN 码的识别码正确,就输出“Right” ,否则,按照规定的格式, 输出正确的 ISBN 码(包括分隔符“-” ) 。 【样例输入样例输入】0-670-82162-0 【样例输出样例输出】0-670-82162-4 2017 年海淀区中小学生信息学奥林匹克竞赛年海淀区中小学生信息学奥林匹克竞赛 2 / 5 2、第 N 个智慧数(100 分) (源文件名称:number.cpp/ number.c/ number.bas) 【题目描述题目描述】 一个正整数如果能表示成了两个正整数的平方差,则称这个数为“智慧数” ,比如 16 就等于 5 的平方减去 3 的平方,所以 16 就是一个智慧数,从 1 开始的自然数列中,将“智 慧数”从小到大编号为 1,2,3,n。现输入一个正整数 n,输出第 n 个“智慧数” 。 【输入输入文件文件】文件名为:number.in 文件中仅包含一个正整数 n。 【输出输出文件文件】文件名为:number.out 文件中仅包含一个正整数,表示编号为 n 的智慧数。 【样例输入样例输入】3 【样例输出样例输出】16 【数据范围数据范围】1 = n = 100。 3、第 m 大的身份证号码(100 分) (源文件名称:id.cpp/id.c/id.bas) 【题目描述题目描述】 身份证号是我国公民的唯一识别码,它由 18 位数字或字母组成(只可能最后一位是字 母) 。18 位身份证号码各位的含义如下:第 1-2 位为省、自治区、直辖市代码;第 3-4 位为 地级市、盟、自治州代码;第 5-6 位为县、县级市、区代码。第 7-14 位为出生年月日,比 如 19970401 代表 1997 年 4 月 1 日;第 15-16 位为顺序号,第 17 位代表性别,男为单数, 女为双数;第 18 位为校验码,0-9 和 X。作为尾号的校验码,是把前十七位数字代入统一 的公式计算出来的,解答本题你不用关心是如何计算出来的。现在给你 n 个身份证号码,请 你按照出生年月日的字典序(年龄从大到小)输出第 m 个人的身份证号。 【输入文件】【输入文件】文件名为:id.in 文件中第一行包含两个正整数 n 和 m, 两数间用一个空格分隔, 接下来的 n 行每行为一 个形如上述格式的身份证号码(不需要关心校验码的正确性,不影响本题解答) 。 【输出输出文件文件】文件名为:id.out 文件中仅包含一行,为题目要求的一个身份证号码。 【样例输入样例输入】4 213021119640203652X210222200012036512 【样例输出样例输出【数据范围数据范围】1 = n = 100,1 = m n) ,然后按所有刻度线将该木棍锯成小段,计算并输出长度最长的木棍的长 度和根数。 【输入文件】【输入文件】文件名为:stick.in 文件中仅有一行,包含三个正整数 L,m 和 n,两两之间用一个空格分隔。 【输出输出文件文件】文件名为:stick.out 文件包含两个正整数 a 和 k, 分别表示最长木棍的长度和根数。(为了简化题目的难度, 所有的测试数据中 m 和 n 一定是 L 的约数) 。两数间用一个空格分隔。 【样例输入样例输入】12 6 4 【样例输出样例输出】2 4 【数据范围数据范围】1 = L = 100000。 5、坐标统计(100 分) (源文件名称:count.cpp/ count.c/ count.bas) 【题目描述题目描述】 输入 n 个点在平面上的坐标(横纵坐标都是整数) ,对于每个点可以控制所有位于它左 下方的点(即横坐标 x 和纵坐标 y 都比它小) ,它可以控制的点的数目称为“战斗力” 。依次 输出每个点的战斗力,最后输出战斗力最高的点的编号(如果若干个点的战斗力并列最高, 输出其中最大的编号) 。 【输入输入文件文件】文件名为:count.in 第一行包含一个正整数 n,接下来的 n 行,每行描述一个点的坐标,第 i+1 行包含两个 正整数 x 和 y,表示编号为 i 的点的横坐标为 x,纵坐标为 y。 【输出输出文件文件】文件名为:count.out 共有 n+1 行第 1 行到第 n 行,每行包含一个整数,第 i 行的整数表示编号为 i 的点的战 斗力,第 n+1 行表示战斗力最高的点的编号。 【样例输入样例输入】6 4 2 6 6 4 8 15 6 11 9 8 14 2017 年海淀区中小学生信息学奥林匹克竞赛年海淀区中小学生信息学奥林匹克竞赛 4 / 5 【样例输出样例输出】0 1 0 1 3 3 6 【数据范围数据范围】1=n=100,1=x=1000,1=y=1000。 6、打印月历(100 分) (源文件名称:calen.cpp/ calen.c/ calen.bas) 【题目描述题目描述】 给你一个年份 y 和一个月份 m,请你按照样例的格式打印出 y 年第 m 月的月历。例如 当 y=2015,m=1 时,2015 年 1 月的月历打印效果就应该如下: S M T W T F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 样例的格式中,第一行为代表星期的字母,第一个字母 S 代表星期日,第二个字母 M 代表星期一,以此类推,第七个字母 S 代表星期六,第一个字母的左边没有空格,两个字 母之间有三个空格分隔。接下来的几行是第 m 月的日期,每一列的数都与本列的第一个字 母左对齐,同一行的两个日期之间要有若干个空格分隔。 为了简化题目的难度,输入还会给出一个正整数 n(n 小于 8) ,表示第 y 年的 1 月 1 日 是星期 n。例如 2015 1 4 的含义是要输出 2015 年 1 月的月历,2015 年 1 月 1 日是星期四。 【输入输入文件文件】文件名为:calen.in 文件中仅有一行,包含三个正整数 y,m 和 n,两数间用一个空格分隔。 【输出输出文件文件】文件名为:calen.out 文件包含符合题目要求的若干行。 【样例输入样例输入】2015 1 4 【样例输出样例输出】 S M T W T F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2017 年海淀区中小学生信息学奥林匹克竞赛年海淀区中小学生信息学奥林匹克竞赛 5 / 5 【数据范围数据范围】1900 y 2100,0 m 13,0 n 8。 【提示提示】本题对结果的输出格式有严格要求,题目描述的功能可以使用 TAB 键,在 C/C+ 中可以使用“t”来实现。 7、分割绳子(100 分) (源文件名称:cable.cpp/ cable.c/ cable.bas) 【题目描述题目描述】 现有 N 条绳子,它们的长度分别为 L1,L2,Ln,如果从它们中切割出 K 条长度 相同的绳子,这 K 条绳子每条最长能有多长? 【输入输入文件文件】文件名为:cable.in 共有两行,第一行包含两个正整数 N 和 K,用一个空格分隔;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论