1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#!/usr/bin/env python3
from fractions import Fraction
def decimal(fraction):
a, b, l2, l5 = fraction.numerator, fraction.denominator, 0, 0
if b == 1: return '{}\n'.format(a)
while not b % 2:
b //= 2
l2 += 1
while not b % 5:
b //= 5
l5 += 1
b2, b5, finited = 2 ** l2, 5 ** l5, 10 ** max(l2, l5)
if b == 1: return '{}\n'.format(a / (b2*b5))
finiten = a * finited // b2 // b5 // b
finite = str(finiten / finited).rstrip('0')
f = Fraction(a, b * b2 * b5) - Fraction(finiten, finited)
a, b, d9 = f.numerator, f.denominator // finited, 9
while d9 % b: d9 = d9*10 + 9
return '{}({})\n'.format(finite, a * d9 // b)
with open('DECIMAL.INP') as fi, open('DECIMAL.OUT', 'w') as fo:
for line in fi: fo.write(decimal(Fraction(*map(int, line.split()))))
|