006 - 実数既約分数化
時間制限 1 秒 / メモリ制限 256 MB / 得点 8 / x 0 /
問題
実数のうち、小数部が循環するものと有限桁のものは分数として表すことができます。
課題
分数で表すことができる実数が与えられたとき、その実数と等しい既約分数(それ以上約分できない分数)を出力するプログラムを作成せよ。
入力
str
1行に、変換したい実数を表す文字列strが与えられる。実数の値は0より大きい。文字列は数字か「.」、「(」、「)」を含む、長さが3以上8以下の文字列である。「.」は小数点、「(」は数字の循環の始まり、「)」は数字の循環の終わりを示す。整数部にも小数部にも、必ず1桁以上の数字が与えられるとする。
ただし、循環小数が与えられた場合、文字列は以下の条件を満たす。
- 循環の始まりと終わりのペアは、小数点の右側に一度だけ現れる。
- 循環の終わりを示す「)」は、文字列の末尾に現れる。
- 循環の始まりと終わりの間には、必ず1桁以上の数字が与えられる。
出力
実数を既約分数で表した形式(分子の整数に続けて「/」区切りで分母の整数を並べたもの)で出力する。
入出力例
入力例1
0.(3)
出力例1
1/3
入力例2
1.0
出力例2
1/1
入力例3
5.2(143)
出力例3
52091/9990
入力例4
0.0739
出力例4
739/10000