import sys from fractions import Fraction from math import lcm as nww, gcd as nwd taśm = int(input()) wlot = [Fraction(1 if i == 0 else 0) for i in range(taśm)] wyjść = [] for i in range(taśm): cele = [int(x)-1 for x in input().split()[1:]] wyjść += [len(cele)] for c in cele: wlot[c] += wlot[i]/wyjść[i] #print(*map(str, wlot), file=sys.stderr) #print(*wyjść, file=sys.stderr) cykl = [a/b if b else Fraction(1) for a, b in zip(wyjść, wlot)] #print(*map(str, cykl), file=sys.stderr) mianownik = nww(*(c.denominator for c in cykl)) #print(*(c.denominator for c in cykl), file=sys.stderr) licznik = nww(*(c.numerator * mianownik // c.denominator for c in cykl if c.numerator)) #print(licznik, file=sys.stderr) print(str(Fraction(licznik, mianownik)))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import sys from fractions import Fraction from math import lcm as nww, gcd as nwd taśm = int(input()) wlot = [Fraction(1 if i == 0 else 0) for i in range(taśm)] wyjść = [] for i in range(taśm): cele = [int(x)-1 for x in input().split()[1:]] wyjść += [len(cele)] for c in cele: wlot[c] += wlot[i]/wyjść[i] #print(*map(str, wlot), file=sys.stderr) #print(*wyjść, file=sys.stderr) cykl = [a/b if b else Fraction(1) for a, b in zip(wyjść, wlot)] #print(*map(str, cykl), file=sys.stderr) mianownik = nww(*(c.denominator for c in cykl)) #print(*(c.denominator for c in cykl), file=sys.stderr) licznik = nww(*(c.numerator * mianownik // c.denominator for c in cykl if c.numerator)) #print(licznik, file=sys.stderr) print(str(Fraction(licznik, mianownik))) |