# Maximo divisor comum
def mdc(n, d):
f = [i for i in range(2, max([n, d]) // 2) if n%i == d%i == 0]
if f == []:
return str(int(n // d)) if n % d == 0 else "{0}/{1}".format(int(n), int(d))
else:
return "{0}/{1}".format(int(n // max(f)), int(d // max(f))) if mdc(n // max(f), d // max(f)) == "{0}/{1}".format(int(n // max(f)), int(d // max(f))) else mdc(n // max(f), d // max(f))
def frac(n):
n2 = n
contador = 1
while not int(n2) == n2:
n2 = round(n2 + n, 10)
contador += 1
return mdc(int(n2), int(contador))
numero = input()
import sys
try:
if numero.count(".") == 0 and numero.count("/") == 1:
partes = numero.split("/")
print(mdc(int(partes[0]), int(partes[1])))
else:
partes = numero.split(".")
if len(partes[1]) == partes[1].count(partes[1][0]) >= 10:
partes[1] = '(' + partes[1][0] + ')'
# Verifica se tem parentesis
if partes[1].count(")") == partes[1].count("(") == 1:
if partes[1].endswith(")"):
dec = partes[1].split("(")
dec[1] = dec[1].strip(")")
denominador = 9 * (len(dec[0]) * 10)
if denominador == 0:
denominador = 1
numerador = int(dec[1])
fraccao1 = mdc(numerador, denominador).split("/")
if dec[0] != '':
fraccao2 = frac(int(dec[0]) / 10).split("/")
else:
fraccao2 = ['0', '1']
if len(fraccao2) == 1:
fraccao2.append('1')
if len(fraccao1) == 1:
#fraccao1 = ['1'] + fraccao1
fraccao1.append('9')
print(mdc(int(partes[0]) * int(fraccao1[1]) * int(fraccao2[1]) + int(fraccao1[0]) * int(fraccao2[1]) + int(fraccao2[0]) * int(fraccao1[1]), int(fraccao1[1]) * int(fraccao2[1])))
else:
print("Formato invalido")
else:
print(frac(float(numero)))
except:
print("Erro: {0}".format(sys.exc_info()[0]))
IyBNYXhpbW8gZGl2aXNvciBjb211bQpkZWYgbWRjKG4sIGQpOgogICAgZiA9IFtpIGZvciBpIGluIHJhbmdlKDIsIG1heChbbiwgZF0pIC8vIDIpIGlmIG4laSA9PSBkJWkgPT0gMF0KICAgIGlmIGYgPT0gW106CiAgICAgICAgcmV0dXJuIHN0cihpbnQobiAvLyBkKSkgaWYgbiAlIGQgPT0gMCBlbHNlICJ7MH0vezF9Ii5mb3JtYXQoaW50KG4pLCBpbnQoZCkpCiAgICBlbHNlOgogICAgICAgIHJldHVybiAiezB9L3sxfSIuZm9ybWF0KGludChuIC8vIG1heChmKSksIGludChkIC8vIG1heChmKSkpIGlmIG1kYyhuIC8vIG1heChmKSwgZCAvLyBtYXgoZikpID09ICJ7MH0vezF9Ii5mb3JtYXQoaW50KG4gLy8gbWF4KGYpKSwgaW50KGQgLy8gbWF4KGYpKSkgZWxzZSBtZGMobiAvLyBtYXgoZiksIGQgLy8gbWF4KGYpKQoKZGVmIGZyYWMobik6CiAgICBuMiA9IG4KICAgIGNvbnRhZG9yID0gMQogICAgd2hpbGUgbm90IGludChuMikgPT0gbjI6CiAgICAgICAgbjIgPSByb3VuZChuMiArIG4sIDEwKQogICAgICAgIGNvbnRhZG9yICs9IDEKICAgIHJldHVybiBtZGMoaW50KG4yKSwgaW50KGNvbnRhZG9yKSkKCm51bWVybyA9IGlucHV0KCkKCmltcG9ydCBzeXMKdHJ5OgogICAgaWYgbnVtZXJvLmNvdW50KCIuIikgPT0gMCBhbmQgbnVtZXJvLmNvdW50KCIvIikgPT0gMToKICAgICAgICBwYXJ0ZXMgPSBudW1lcm8uc3BsaXQoIi8iKQogICAgICAgIHByaW50KG1kYyhpbnQocGFydGVzWzBdKSwgaW50KHBhcnRlc1sxXSkpKQogICAgZWxzZToKICAgICAgICBwYXJ0ZXMgPSBudW1lcm8uc3BsaXQoIi4iKQogICAgICAgIAogICAgICAgIGlmIGxlbihwYXJ0ZXNbMV0pID09IHBhcnRlc1sxXS5jb3VudChwYXJ0ZXNbMV1bMF0pID49IDEwOgogICAgICAgICAgICBwYXJ0ZXNbMV0gPSAnKCcgKyBwYXJ0ZXNbMV1bMF0gKyAnKScKICAgICAgICAKICAgICAgICAjIFZlcmlmaWNhIHNlIHRlbSBwYXJlbnRlc2lzCiAgICAgICAgaWYgcGFydGVzWzFdLmNvdW50KCIpIikgPT0gcGFydGVzWzFdLmNvdW50KCIoIikgPT0gMToKICAgICAgICAgICAgaWYgcGFydGVzWzFdLmVuZHN3aXRoKCIpIik6CiAgICAgICAgICAgICAgICBkZWMgPSBwYXJ0ZXNbMV0uc3BsaXQoIigiKQogICAgICAgICAgICAgICAgZGVjWzFdID0gZGVjWzFdLnN0cmlwKCIpIikKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZGVub21pbmFkb3IgPSA5ICogKGxlbihkZWNbMF0pICogMTApCiAgICAgICAgICAgICAgICBpZiBkZW5vbWluYWRvciA9PSAwOgogICAgICAgICAgICAgICAgICAgIGRlbm9taW5hZG9yID0gMQogICAgICAgICAgICAgICAgbnVtZXJhZG9yID0gaW50KGRlY1sxXSkKICAgICAgICAgICAgICAgIGZyYWNjYW8xID0gbWRjKG51bWVyYWRvciwgZGVub21pbmFkb3IpLnNwbGl0KCIvIikKICAgICAgICAgICAgICAgIGlmIGRlY1swXSAhPSAnJzoKICAgICAgICAgICAgICAgICAgICBmcmFjY2FvMiA9IGZyYWMoaW50KGRlY1swXSkgLyAxMCkuc3BsaXQoIi8iKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBmcmFjY2FvMiA9IFsnMCcsICcxJ10KICAgICAgICAgICAgICAgIGlmIGxlbihmcmFjY2FvMikgPT0gMToKICAgICAgICAgICAgICAgICAgICBmcmFjY2FvMi5hcHBlbmQoJzEnKQogICAgICAgICAgICAgICAgaWYgbGVuKGZyYWNjYW8xKSA9PSAxOgogICAgICAgICAgICAgICAgICAgICNmcmFjY2FvMSA9IFsnMSddICsgZnJhY2NhbzEKICAgICAgICAgICAgICAgICAgICBmcmFjY2FvMS5hcHBlbmQoJzknKQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBwcmludChtZGMoaW50KHBhcnRlc1swXSkgKiBpbnQoZnJhY2NhbzFbMV0pICogaW50KGZyYWNjYW8yWzFdKSArIGludChmcmFjY2FvMVswXSkgKiBpbnQoZnJhY2NhbzJbMV0pICsgaW50KGZyYWNjYW8yWzBdKSAqIGludChmcmFjY2FvMVsxXSksIGludChmcmFjY2FvMVsxXSkgKiBpbnQoZnJhY2NhbzJbMV0pKSkKICAgICAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoIkZvcm1hdG8gaW52YWxpZG8iKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KGZyYWMoZmxvYXQobnVtZXJvKSkpCmV4Y2VwdDoKICAgIHByaW50KCJFcnJvOiB7MH0iLmZvcm1hdChzeXMuZXhjX2luZm8oKVswXSkp