#542. 「习题3-8」循环小数 Repeating Decimals 暂未评定

时间限制:1000 ms 内存限制:128 MiB 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: root

题目描述

PDF

分数1/33的十进制展开式是0.03,其中的03是用来表示03的循环无限重复,没有中间的数字。事实上,每一个有理数(分数)的小数展开都有一个重复的周期,而非有理数的小数展开则没有这种重复的周期。 有理数的小数扩展及其重复周期的例子如下所示。在这里,我们用括号来括住重复的循环,而不是在循环上加一条杠 。

分数 小数展开 重复循环 循环长度
1/6 0.1(6) 6 1
5/7 0.(714285) 714285 6
1/250 0.004(0) 0 1
300/31 9.(677419354838709) 677419354838709 15
655/990 0.6(61) 61 2

写一个程序,读取分数的分子和分母并确定它们的重复周期。 为了解决这个问题,将分数的重复周期定义为小数点右边的第一个最小长度的数字串,这个数字串无限重复,中间没有数字。因此,例如,分数1/250的重复周期是0,它从第4位开始(与从第1位或第2位开始的0相反,与从第1位或第4位开始的00相反)。

题面翻译

输入整数 (0≤ ≤3000,1≤ ≤3000),输出a/b的循环小数表示以及循环节的长度。例如 =5, =43 小数表示为0.(116279069767441860465),循环节长度为21。 补充: 如果循环节超过50位,就在第50位后打省略号(三个点,就像“…”)

感谢@很dalao的蒟蒻 提供的翻译

输入格式

输入文件的每一行都由一个非负的整数分子和一个正的整数分母组成。输入的整数都不超过3000。End-of-file表示输入的结束。

输出格式

对于每一行输入,打印分数、它的小数扩展到小数点右边或50位小数点的第一个循环出现(以先到者为准),以及整个重复循环的长度。 在写小数扩展时,尽可能将重复周期用括号括起来。如果整个重复周期不在前50位内出现,则在周期开始的地方加上左括号--它将在前50位内开始,并在第50位后加上'...)'。

样例

样例输入

76 25
5 43
1 397

样例输出

76/25 = 3.04(0)
   1 = number of digits in repeating cycle

5/43 = 0.(116279069767441860465)
   21 = number of digits in repeating cycle

1/397 = 0.(00251889168765743073047858942065491183879093198992...)
   99 = number of digits in repeating cycle