一、报数
【题目描述】
CG同学又弄到一批新牛,新牛到了农场后,首先学习汉语,数的朗读成为新牛的难题。朗读绝对值小于10亿的数。
新牛们知道汉语中有如下的朗读规则:
1、首先读符号位,然后读整数部分。整数部分之后可能出现小数点,如果有小数部分则小数点一定出现,并且读出小数点之后读小数部分。
2、符号位的读法是:
(1)正数,不论正号“+”是否出现,都不必读出符号位;
(2)负数最左边的符号是“-”读成“负”(以“F”来表示“负”)。
3、整数部分的读法是:
(1)如果整数部分不存在或整数部分全为零则直接读成“零”(以“0”来表示“零”);
(2)否则从整数部分中最左边的非零数字开始读起,然后以十,百,千,万,亿(分别以“S”,“B”,“Q”“W”,“Y”来表示)等数量单位来拼读整数部分。
4、整数部分中:
(1)每一个非零数字都必须结合各个相应的数量单位读出来。
(2)每一段连续的“零”只能读成一个“零”,但是某一段连续的“零”的左侧或者右侧不存在非零数字(这里只考虑整数部分)则这一段“零”不应该读出来。
5、如果有小数部分,则首先读“点”(以“D”来表示“点”),然后从左至右有顺序的读出各个小数位。在读小数部分的时候不可以使用十,百,千,万,亿等数量单位;但是小数部分的每一个数字都要读出来,连续的零不可以读成一个零,而应该分别读出。
6、如果数中有小数点而没有小数部分,则不应该把小数点读出来。
例如:
-0020030004.567应该读成“F2Q03W04D567”,000.89应该读成“0D89”。
请你编写程序帮助新牛把给定的数正确地读出来。
【输入数据】
输入文件仅一行,存放了一个数(不超过50个字符),其绝对值小于10亿。
【输出数据】
输出文件仅一行,输出这个数的正确读法。
【样例输入】
-0020030004.567
【样例输出】
F2Q03W04D567
二、跑步
【题目描述】
新牛到部队,CG要求它们每天早上搞晨跑,从A农场跑到B农场。从A农场到B农场中有n-2个路口,分别标上号,A农场为1号,B农场为n号,路口分别为2…n-1号,从A 农场到B农场有很多条路径可以到达,而CG发现有的路口是必须经过的,即每条路径都经过的路口,CG要把它们记录下来,这样CG就可以先到那个路口,观察新牛们有没有偷懒,而你的任务就是找出所有必经路口。
【输入数据】
第一行两个用空格隔开的整数n(3≤n≤2000)和e(1≤e≤8000)。
接下来从第2到第e+1行,每行两个用空格隔开的整数p和q,表示路口p和q之间有路径直达。
输入数据保证必经路口一定存在,并且每个路口都和A农场、B农场相连通。
【输出数据】
第一行一个整数m,表示必经路口的数目。
第二行按从小到大的顺序依次输出每个必经路口的编号,每两个数之间用一个空格隔开。
注意:不包括起点和终点。
【样例输入】
6 6
1 2
2 4
2 3
3 5
4 5
5 6
【样例输出】
2
2 5
三、装备运输
【题目描述】德国放松对英国的进攻后,把矛头指向了东边――苏联。
1943年初,东线的战斗进行到白热化阶段。据可靠情报,90余万德国军队在库尔斯克准备发动浩大攻势。因此,朱可夫元帅要求你立即从远东的军工厂运输大量装备支援库尔斯克前线。
列车司机告诉你,一趟列车最多可以容纳V体积的武器装备,但是你可能不能装满,因为列车承受不了那么大的重量,一趟列车最多可以承载G单位的重量。同时,军工厂仓库提供给你一份装备清单,详细记录了每件装备的体积、重量和火力。为了有效支援朱可夫元帅,你要找到一种方案,使得总火力值最大。
【输入数据】
第一行:V和G表示最大重量和体积。
第二行:N表示仓库有N件装备。
第三行到N+2行:每行3个数Ti Vi Gi表示各装备的火力值、体积和重量。
【输出数据】
输出一个数,表示可能获得的最大火力值。
【样例输入】
6 5
4
10 2 2
20 3 2
40 4 3
30 3 3
【样例输出】
50
【数据范围】
对于50%的数据,V,G,N≤100;
对于100%的数据,V,G,N≤400;
四、翻转游戏
【问题描述】
翻转游戏是在一个4格*4格的长方形上进行的,在长方形的16个格上每个格子都放着一个双面的物件。每个物件的两个面,一面是白色的,另一面是黑色,每个物件要么白色朝上,要么黑色朝上,每一轮你只能翻3至5个物件,从而由黑到白地改变这些物件上面的颜色,反之亦然。每一轮被选择翻转的物件遵循以下规则:
- 从16个物件中任选一个。
- 翻转所选择的物件的同时,所有与它相邻的左方物件、右方物件、上方物件和下方物件(如果有的话),都要跟着翻转。
以下为例:
bwbw
wwww
bbwb
bwwb
这里“b”表示该格子放的物件黑色面朝上,“w”表示该格子放的物件白色朝上。如果我们选择翻转第三行的第一个物件(如下图所示),那么格子状态将变为:

bwbw
bwww
wwwb
wwwb
游戏的目标是翻转到所有的物件白色朝上或黑色朝上。你的任务就是写一个程序求最少的翻转次数来实现这一目标。
【输入格式】
输入文件flip.in包含4行,每行4个字符,每个字符“w”或“b”表示游戏开始时格子上物件的状态。
【输出格式】
输出文件flip.out仅一个整数,即从给定状态到实现这一任务的最少翻转次数。如果给定的状态已经实现了目标就输出0,如果不可能实现目标就输出“Impossible”。
【输入样例】
bwwb
bbwb
bwwb
bwww
【输出样例】
4
题解在这里。
Leave a Reply