题目描述
写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式。
如果小数有循环节的话,把循环节放在一对圆括号中。例如,
1/3 = .33333333 写成0.(3)
41/333 = 0.123123123… 写成0.(123)
用xxx.0 成表示整数
典型的转化例子:
1/3 = 0.(3)
22/5 = 4.4
1/7 = 0.(142857)
2/2 = 1.0
3/8 = 0.375
45/56 = 0.803(571428)
PROGRAM NAME: fracdec
INPUT FORMAT
单独的一行包括被空格分开的 N和D, 1 <= N,D <= 100000。
SAMPLE INPUT (file fracdec.in)
45 56
OUTPUT FORMAT
小数的表示方法上面说的很明白了,如果输出的长度超过76个字符,每行输出76个。
SAMPLE OUTPUT (file fracdec.out)
0.803(571428)
输入
输出
样例输入
样例输出
数据范围限制
思路:
直接模拟,整数部分不用管,只搞小数部分
每次n*10 div d,若为0就直接退出输出(不循环)
否则就记录一下当前算到该位时的的n*10 mod d的数位
当再次出现n*10 mod d,加上括号,输出
上面那串东西可能难理解,我重写一个……
做除法的时候,如果算出以前出现过的余数
比如100/3,余1
进十:10/3,余1
注意,1已经出现过了,接下来再算就循环下去了
加上括号,输出
代码:

该博客介绍了如何编写程序将形如N/D的分数转化为小数形式,特别是处理循环节的情况。通过模拟除法过程,当遇到重复的余数时标记循环节并输出。样例输入和输出以及代码实现均有详细说明。
最低0.47元/天 解锁文章
722

被折叠的 条评论
为什么被折叠?



