拼图(graph.cpp)
【问题描述】
小明想用自己的打印机打印一幅宽为 W,高为 H 的画。
然而他的打印机不够大,只能打出边长为 a 的正方形图片,他打算将画分割成很多个部分,每个部分都是长方形,且长方形的边与原来的画的边平行,长方形的每边长度都不超过 a。
为了减小麻烦,小明希望最终分出的长方形数量最少。 请问他最少要分出多少个长方形?
例如,当小明的画宽为 25,高为 15 时,若打印机可以打印的正方形的边长为 10,则至少要分出 6 个长方形。
【输入格式】
从文件 graph.in 中输入数据。
输入一行包含三个整数 W, H, a,意义如上所述。
【输出格式】
输出到文件 graph.out 中。
输出一行包含一个整数,表示答案。
【样例输入】
25 15 10
【样例输出】
6
【评测用例规模与约定】
注意:以下规模是评测时输入数据一定会满足的限制,在你的程序中不需要对这些限制进行检查。 对于所有评测用例,1 ≤ W ≤ 10000,1 ≤ H ≤ 10000,1 ≤ a ≤ 10000。
门牌制作(plate.cpp)
【问题描述】
小明要给一层楼的房间安装门牌号码。一个门牌由三位数字组成,第一位为楼层号,后面两位为房间号,当楼层中有 n 个房间时,房间号由 1 至 n 连续编号。
例如:当 4 层有 5 个房间时,门牌号码分别编为 401、402、403、404、405。要制作一个门牌号,必须制作对应的数字符号,并粘贴在牌子上。
例如要制作 401 这个门牌号,需要数字符号 4、0、1 各一个;而门牌号 404 需要数字符号 4 两个,数字符号 0 一个。
给定楼层的编号,和这层楼的房间总数,请计算需要数字符号 0、1、2、3、4、5、6、7、8、9 各多少个。
【输入格式】
从文件 plate.in 中输入数据。 输入的第一行包含一个整数 f,表示楼层号。第二行包含一个整数 n,表示房间数量。
【输出格式】
输出到文件 plate.out 中。
输出一行,包含十个整数,依次表示需要数字符号 0、1、2、3、4、5、6、7、8、9 的个数。相邻的数之间使用一个空格分隔。
【样例输入】
4 5
【样例输出】
5 1 1 1 6 1 0 0 0 0
【评测用例规模与约定】
注意:以下规模是评测时输入数据一定会满足的限制,在你的程序中不需要对这些限制进行检查。对于所有评测用例,1 ≤ f ≤ 9,1 ≤ n ≤ 99。
向左转(left.cpp)
【问题描述】
老师正在操场上给同学们训练队列。
小明在队列中。
开始的时候,小明面向正北站立。
每次老师发出一个指令,小明都跟随指令行动。
老师的指令可能是:向左转、向右转、向后转。每个指令的动作与平时我们体育课上的动作一致,具体的:
向左转:
1. 如果原来小明朝北,向左转后朝西;
2. 如果原来小明朝南,向左转后朝东;
3. 如果原来小明朝西,向左转后朝南;
4. 如果原来小明朝东,向左转后朝北。
向右转:
1. 如果原来小明朝北,向右转后朝东;
2. 如果原来小明朝南,向右转后朝西;
3. 如果原来小明朝西,向右转后朝北;
4. 如果原来小明朝东,向右转后朝南。
向后转:
1. 如果原来小明朝北,向后转后朝南;
2. 如果原来小明朝南,向后转后朝北;
3. 如果原来小明朝西,向后转后朝东;
4. 如果原来小明朝东,向后转后朝西。
给定一连串的动作指令,请问所有指令执行完后,小明的方向朝哪?
【输入格式】
从文件 left.in 中输入数据。
输入第一行包含一个整数 n,表示命令的个数。
接下来 n 行,每行一个命令。
如果命令为 left,表示向左转。如果命令为 right,表示向右转。如果命令为 around,表示向后转。
【输出格式】
输出到文件 left.out 中。
输出一个大写字母,表示最终小明的朝向。如果最终朝北,输出 N。如果最终朝南,输出 S。如果最终朝西,输出 W。如果最终朝东,输出 E。
【样例输入】
4
left
left
right
around
【样例输出】
E
【评测用例规模与约定】
注意:以下规模是评测时输入数据一定会满足的限制,在你的程序中不需要对这些限制进行检查。对于所有评测用例,1 ≤ n ≤ 1000。
龟兔赛跑(race.cpp)
【问题描述】
乌龟和兔子正在赛跑。
兔子尽全力每分钟跑 a 米,乌龟尽全力每分钟跑 b 米。从比赛开始,乌龟一直不停的尽全力跑。而兔子却比较偷懒。
每过一分钟,兔子都会看看乌龟,如果乌龟在他后面,他就会说“乌龟跑得真慢呀,我就算睡一觉也比乌龟快”,然后躺在地上休息一分钟;如果乌龟与他的位置相同或者跑在他前面,他就会说“乌龟跑得真慢呀,我一下就追上他了”,然后尽全力跑一分钟。已知整个跑道长 t 米,请问谁先跑到终点?
【输入格式】
从文件 race.in 中输入数据。
输入一行包含三个整数 a, b, t。
【输出格式】
输出到文件 race.out 中。
输出一行包含一个拼音,表示谁先到达终点。如果兔子先到终点,输出 tuzi;如果乌龟先到终点,输出 wugui;如果同时到终点,输出 tongshi。
【样例输入】
3 2 6
【样例输出】
tongshi
【样例说明】
第一分钟兔子跑了 3 米,乌龟跑了 2 米。
第二分钟兔子休息,乌龟跑了 2 米到了 4 米的位置。
第三分钟兔子跑了 3 米,乌龟跑了 2 米,同时达到终点。
【样例输入】
5 3 7
【样例输出】
wugui
【样例输入】
5 3 8
【样例输出】
tuzi
【评测用例规模与约定】
注意:以下规模是评测时输入数据一定会满足的限制,在你的程序中不需要对这些限制进行检查。对于所有评测用例,1 ≤ b < a ≤ 10000,1 ≤ t ≤ 10000。
字符串改造(trans.cpp)
【问题描述】
小明有一个字符串,由小写英文字母组成。
小明准备对他的字符串进行改造,改造的方法是删除字符串中间的一部分字符。
小明希望改造完后,新的字符串中的相邻字符都满足左边的字符小于等于右边的字符(a < b < … < z)。
例如,对于字符串 happy,小明可以删除第一个字母,变成 appy,满足要求。或者小明删除第二字母,变成 hppy,也满足要求。小明还有其他方法使得结果满足要求。
再如,对于字符串 autumn,可以删除 3 个字母变成 tmn,或者删除 4 个字母变成 at。
其他满足要求的方案还有很多。
小明想知道,对于一个字符串,至少要删除多少个字母能满足要求。
【输入格式】
从文件 trans.in 中输入数据。
输入一行包含一个字符串。
【输出格式】
输出到文件 trans.out 中。
输出一行,包含一个整数,表示最少要删除的字母个数。
【样例输入】
happy
【样例输出】
1
【样例输入】
autumn
【样例输出】
3
【评测用例规模与约定】
注意:以下规模是评测时输入数据一定会满足的限制,在你的程序中不需要对这些限制进行检查。
对于 30%的评测用例,字符串的长度不超过 20;
对于 60%的评测用例,字符串的长度不超过 1000;
对于 80%的评测用例,字符串的长度不超过 10000;
对于所有评测用例,字符串的长度不超过 100000。