问题 2262. -- 数的朗读

2262: 数的朗读

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 0
[上一题][提交][讨论版][状态][下一题]

题目描述

        春游时小可可结识了刚回国定居的Sealock。但是Sealock在海外出生,回国后才开始学习汉语。数的朗读成为Sealock的一个难题,小可可下决心教会Sealock如何朗读绝对值小于10亿的数。
        小可可知道汉语中有如下的读数规则:
(1)首先读符号位,然后读整数部分,整数部分之后可能出现小数点,如果有小数部分则小数点一定出现、并且读出小数点之后读小数部分;
(2)符号位的读法是:
(2.1)正数,不论正号" +" 是否出现,都不必读出符号位;
(2.2)负数的最左边的符号是" -" ,读成" 负" (以" F" 来表示" 负" );
(3)整数部分的读法是:
(3.1)如果整数部分不存在或者整数部分全是零则直接读成" 零" (以" 0" 来表示" 零" )
(3.2)否则从整数部分中最左边的非零数字开始读起,然后以十、百、千、万、亿(分别以" S" 、" B" 、" Q" 、" W" 、" Y" 来表示)等数量单位来拼读整数部分;
(4)整数部分中:
(4.1)每一个非零数字都必须结合各个相应的数量单位读出来;
(4.2)每一段连续的" 零" 只能读成一个" 零" ,但是某一段连续的" 零" 的左侧或者右侧不存在非零数字(这里只考虑整数部分)则这一段" 零" 不应该读出来;
(5)如果有小数部分,则首先读" 点" (以" D" 来表示" 点" ),然后从左至右顺序地读出各个小数位。在读小数部分的时候不可以使用十、百、千、万、亿等数量单位;但是小数部分的每一个数字都需要读出来,连续的零不可以读成一个" 零" ,而应该分别读出;
(6)如果数中有小数点而没有小数部分,则不应该把小数点读出来。
          例如,-0020030004.567应该读成" F2Q03W04D567" ,000.89应该读成" 0D89"
          请你编写程序帮助小可可把给定的数正确的读出来。

输入 [sdld.in]

输入文件仅一行,存放了一个数(不超过50个字符),其绝对值小于10亿。

输出 [sdld.out]

输出文件仅一行,输出这个数的正确读法。

样例输入

-0020030004.567

样例输出

F2Q03W04D567

提示

标签

[上一题][提交][讨论版][状态][下一题]