ACM程序设计大赛(校级)
- 格式:doc
- 大小:26.00 KB
- 文档页数:4
Problem A ISBN号码
Description
每一本正式出版的图书都有一个ISBN号码之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在该出版社的编号;最后一位为识别码。
识别码计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2.,……,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11 的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
Input
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
Output
输出共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定格式,输出正确的ISBN号码(包括分隔符“-”)。
Sample1 Input
0-670-82162-4
Sample2 Input
0-670-82162-0
Sample1 Output
Right
Sample2 Output
0-670-82162-4
Problem B 子串清除
Description
我们定义字符串A是字符串B的子串当且仅当我们能在B串中找到A串。现在给你一个字符串A,和另外一个字符串B,要你每次从B串中从左至右找第一个A串,并从B串中删除它,直到A串不为B串的子串,问你需要进行几次删除操作。
注意:不是“最少多少次”,而是按题目要求从左至右删除子串。删除A串后的B串自动联成一个整体。
Input
两行,第一行一个字符串A,第二行一个字符串B。
目标串长度小于256,输入文件小于500kb。
Output
一个整数,需要进行几次删除操作。
Sample Input
abbbbc
hwyebpabbbbciabbbbcekrbbmqqesfvhwpvfclrc
Sample Output
2
Problem C ByteLand国王的地球假日
Description
ByteLand是一个前卫的外星王国。他们对地球文化很感兴趣。他们经过几年的勘测后,对地球也有些了解。于是ByteLand国王MB决定到地球的一个城市参观。
在地球的每个城市都有一个英文代号,如acb。MB国王用抽签来决定去哪个城市参观。
已知所有城市都是按一定顺序来排列起来的,如城市名为3位字母的城市是这样按照字典序排列的:
abc
acb
bac
bca
cab
在这里abc是第一个城市,cba是最后一个城市。
国王抽签是这样抽的:
第一张签决定城市名由几位字母组成;
第二张签表示这些城市里的第几个。
Input
先输入n(城市名的长度),一个空格后,再输入m(第几个城市)
Output
一行:城市的代号
Sample Input
11 1
Sample Output
abcdefghijk
Problem D 拔河比赛
Description
superwyh的学校要举行拔河比赛,为了在赛前锻炼大家,老师决定把班里所有人分为两拨,进行拔河因为为锻炼所以为了避免其中一方的实力过强老师决定以体重来划分队伍,尽
量保持两个队伍的体重差最少,因为老师对结果没兴趣,所以只告诉老师最小的体重差是多少就行了。这个受苦受累的任务就交给superwyh了,因为这两天superwyh的后背间谍sjh
闹肚子了,所以只好superwyh亲自去调查每个人的体重,但是仅仅知道体重依然难以确定到底如何分配队伍,请各位oier帮助superwyh出出主意。
Input
第一行为人数(1<=n<=100),从第二行开始是每个人的体重(0<=m<=100)。
Output
最小体重差。
Sample Input
10
23
41
12
Sample Output
4
Problem E 埃及分数
Description
在古埃及,人们使用单位分数的和(形如 1/a 的,a 是正整数)表示一切有理数。如:2/3 = 1/2 + 1/6,但不允许 2/3 = 1/3 + 1/3,因为加数中有相同的。
对于一个分数 a/b ,表示方法有很多种,但是哪种最好呢?
首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。
如:
19/45 = 1/3 + 1/12 + 1/180
19/45 = 1/3 + 1/15 + 1/45
19/45 = 1/3 + 1/18 + 1/30
19/45 = 1/4 + 1/6 + 1/180
19/45 = 1/5 + 1/6 + 1/18
最好的是最后一种,因为 1/18 比 1/180、1/45、1/30、1/180 都要大。
给出a、b (0 < a < b < 1000),试编程计算最好的表达方式。
Input
输入只有一行:a、b,表示需要表示的分数 a/b (0 < a < b < 1000)。
Output
一行,依次给出最好的表达方式中各个单位分数的分母(保证都在 32 位整型范围内)。Sample Input
19 45
Sample Output
5 6 18