この質問は、小数の終端だけに適用する必要はありません-小数の繰り返しは、アルゴリズムを介して分数に変換することもできます。
あなたの仕事は、入力として繰り返される小数をとるプログラムを作成し、その小数展開を生成する対応する分子と分母(最低条件で)を出力することです。1より大きい分数は、などの不適切な分数として表す必要があります9/5
。入力が正であると仮定できます。
繰り返される小数はこの形式で与えられます:
5.3.87
次のように、2番目のドットの後のすべてが繰り返されます。
5.3878787878787...
プログラムは、分子(分母)を表す2つの整数をスラッシュ(またはプレーンテキストを出力しない場合は言語の同等の形式)で区切って出力します。
889/165
小数点の終了には、2番目のドットの後には何もありません。また、繰り返しのない小数部分のない小数点には、2つのドットの間に何もありません。
テストケース
これらのテストケースは、必要なすべてのコーナーケースをカバーしています。
0..3 = 1/3
0.0.3 = 1/30
0.00.3 = 1/300
0.6875. = 11/16
1.8. = 9/5
2.. = 2/1
5..09 = 56/11
0.1.6 = 1/6
2..142857 = 15/7
0.01041.6 = 1/96
0.2.283950617 = 37/162
0.000000.1 = 1/9000000
0..9 = 1/1
0.0.9 = 1/10
0.24.9 = 1/4
必要に応じて、整数部分のない分数には最初のドットの左側に何もないと仮定することもできます。次のオプションのテストケースでテストできます。
.25. = 1/4
.1.6 = 1/6
..09 = 1/11
.. = 0/1
(in lowest terms)
すなわち、分数を単純化する必要があります。
13
代わりに出力でき13/1
ますか?
1.9999...
と出力を処理してください2/1
1.9999.
は19999/10000
、2/1
あなたが必要1..9
とするために、そうではありませんか?
9/99
ですか(例:)?