Функция уменьшения - PullRequest
0 голосов
/ 12 июля 2020

По заданному списку рациональных чисел найдите их произведение.

Концепция Функция reduce () применяет кумулятивно функцию двух аргументов к списку объектов последовательно слева направо, чтобы уменьшить его до одного значения . Допустим, у вас есть список, скажем [1,2,3], и вам нужно найти его сумму.

reduce (lambda x, y: x + y, [1 , 2,3]) 6 Также можно определить начальное значение. Если он указан, функция примет начальное значение в качестве заданного значения, а затем уменьшится. Это эквивалентно добавлению начального значения в начало списка. Например:

reduce (lambda x, y: x + y, [1,2,3], -3) 3

из дробей import gcd reduce (gcd, [2,4,8], 3) 1 Формат ввода

Первая строка содержит количество рациональных чисел. Каждая из следующих строк содержит по два целых числа, числитель () и знаменатель () рационального числа в списке.

Ограничения

Формат вывода

Вывести только одну строку содержащий числитель и знаменатель произведения чисел в списке в его простейшей форме, т.е. числитель и знаменатель не имеют общего делителя, кроме.

Пример ввода 0

3 1 2 3 4 10 6 Пример вывода 0

5 8

1 Ответ

0 голосов
/ 12 июля 2020
    from fractions import Fraction
from functools import reduce

def product(fracs):
    t =reduce(lambda x,y:Fraction(x.numerator*y.numerator,x.denominator*y.denominator),fracs)
    return t.numerator, t.denominator

if __name__ == '__main__':
    fracs = []
    for _ in range(int(input())):
        fracs.append(Fraction(*map(int, input().split())))
    result = product(fracs)
    print(*result)
...