def convert(numerator, denominator):
integer_part = str(numerator // denominator)
ans = ''
l = dict()
i = 0
numerator = numerator % denominator
l[numerator] = i
i += 1
if numerator==0:
return integer_part
while True:
if numerator==0:
return '{}.{}'.format(integer_part, ans)
digit, numerator = divmod(numerator*10, denominator)
ans += str(digit)
if numerator not in l:
l[numerator] = i
i += 1
else:
return '{}.{}({})'.format(integer_part, ans[:l[numerator]], ans[l[numerator]:])
assert convert
(1230, 10) == '123', convert
(1230, 10) assert convert
(123, 100) == '1.23', convert
(123, 100) assert convert
(10, 12) == '0.8(3)', convert
(10, 12) assert convert
(100, 12) == '8.(3)', convert
(100, 12) assert convert
(1000, 12) == '83.(3)', convert
(1000, 12) assert convert
(10, 13) == '0.(769230)', convert
(10, 13)
print('OK')
ZGVmIGNvbnZlcnQobnVtZXJhdG9yLCBkZW5vbWluYXRvcik6CiAgICBpbnRlZ2VyX3BhcnQgPSBzdHIobnVtZXJhdG9yIC8vIGRlbm9taW5hdG9yKQogICAgYW5zID0gJycKICAgIGwgPSBkaWN0KCkKICAgIGkgPSAwCiAgICAKICAgIG51bWVyYXRvciA9IG51bWVyYXRvciAlIGRlbm9taW5hdG9yCiAgICBsW251bWVyYXRvcl0gPSBpCiAgICBpICs9IDEKCiAgICBpZiBudW1lcmF0b3I9PTA6CiAgICAgICAgcmV0dXJuIGludGVnZXJfcGFydAogICAgCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGlmIG51bWVyYXRvcj09MDoKICAgICAgICAgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KGludGVnZXJfcGFydCwgYW5zKQogICAgICAgIAogICAgICAgIGRpZ2l0LCBudW1lcmF0b3IgPSBkaXZtb2QobnVtZXJhdG9yKjEwLCBkZW5vbWluYXRvcikKICAgICAgICBhbnMgKz0gc3RyKGRpZ2l0KQogICAgICAgIGlmIG51bWVyYXRvciBub3QgaW4gbDoKICAgICAgICAgICAgbFtudW1lcmF0b3JdID0gaQogICAgICAgICAgICBpICs9IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gJ3t9Lnt9KHt9KScuZm9ybWF0KGludGVnZXJfcGFydCwgYW5zWzpsW251bWVyYXRvcl1dLCBhbnNbbFtudW1lcmF0b3JdOl0pCgphc3NlcnQgY29udmVydCgxMjMwLCAxMCkgPT0gJzEyMycsIGNvbnZlcnQoMTIzMCwgMTApCmFzc2VydCBjb252ZXJ0KDEyMywgMTAwKSA9PSAnMS4yMycsIGNvbnZlcnQoMTIzLCAxMDApCmFzc2VydCBjb252ZXJ0KDEwLCAxMikgPT0gJzAuOCgzKScsIGNvbnZlcnQoMTAsIDEyKQphc3NlcnQgY29udmVydCgxMDAsIDEyKSA9PSAnOC4oMyknLCBjb252ZXJ0KDEwMCwgMTIpCmFzc2VydCBjb252ZXJ0KDEwMDAsIDEyKSA9PSAnODMuKDMpJywgY29udmVydCgxMDAwLCAxMikKYXNzZXJ0IGNvbnZlcnQoMTAsIDEzKSA9PSAnMC4oNzY5MjMwKScsIGNvbnZlcnQoMTAsIDEzKQoKcHJpbnQoJ09LJyk=