题目名称 995. [NOIP 2010冲刺四]报数
输入输出 readrule.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarsywgz 于2012-08-07加入
开放分组 全部用户
提交状态
分类标签
模拟 数学 字符串
分享题解
通过:19, 提交:71, 通过率:26.76%
Gravatar传奇 100 0.001 s 0.17 MiB Pascal
Gravatar天下第一的吃货殿下 100 0.001 s 0.17 MiB Pascal
GravatarWJW0612 100 0.002 s 0.17 MiB Pascal
Gravatardingyi12321 100 0.002 s 0.17 MiB Pascal
GravatarKZNS 100 0.002 s 0.29 MiB C++
Gravatar明天 100 0.002 s 0.31 MiB C++
GravatarEzio 100 0.002 s 0.31 MiB C++
Gravatardevil 100 0.002 s 0.32 MiB C++
Gravatarlucifer 100 0.003 s 0.17 MiB Pascal
Gravatarcodewaysky 100 0.003 s 0.31 MiB C++
本题关联比赛
20120808
关于 报数 的近10条评论(全部评论)
62行。可能是 cogs 这题最结构化的代码。
GravatarRapiz
2016-10-26 22:29 8楼
表示数据坑……
Gravatar落尘
2015-10-14 15:43 7楼
别拦我我要吐!一!会!
GravatarHouJikan
2014-09-27 23:00 6楼
有个点是故意卡人一次过的吗!!
GravatarEzio
2014-09-26 21:41 5楼
题目不难,代码写的想死
Gravatardevil
2014-09-25 22:28 4楼
比较简单,不过很麻烦。我开放了代码,欢迎各路高手点评代码 :)
GravatarWJW0612
2012-11-02 20:18 3楼
我開放了我的代碼。。誰有興趣了可以看看。。各種蛋疼的goto。。。
GravatarMakazeu
2012-10-29 12:44 2楼
介题目测有几个点超过10亿范围了了,LS一遍艾西怎么写的求教
Gravatar天下第一的吃货殿下
2012-10-29 10:22 1楼

995. [NOIP 2010冲刺四]报数

★   输入文件:readrule.in   输出文件:readrule.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

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”。

请你编写一个程序帮助新牛把给定的数正确的读出来。

【输入数据】

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

【输出数据】

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

【样例输入】

-0020030004.567

【样例输出】

F2Q03W04D567