История изменений
Исправление qulinxao3, (текущая версия) :
и в чём проблема то?
отсортировал по отдельности a и b( b вообщето можно и не)
всунул в приоритетную очередь от каждого ряда по наименьшей дроби ещё не расмотренной в виде пар (0 bi) где первое это индекс из a второе это знаметатель
в начале j=0 z=1 счётчик=0
и поехал вытащил из очереди очередную минимальную дробь i,d если это дубль (a[i]*z==j*d т.е равно ранее вытащенной) то ничё иначе увеличиваем счётчик если счётчик в с выдали эту дробь в выход
j=a[i], z=d
сунули в очередь очередную дробь i+1,d
очередь приоритетная в корне с минимальным a[i]/d
т.е по факту элементами очереди можно кортежи (Fraction(a[i],d),i)
тогда можно просто дискардит очередные кортежи у которых совпадает нулевеой элемент
если текущий это r,i=heapq.heappop(pq)
то heapq.heappush(pq,(Fraction(a[i+1],r.denominator),i+1))
как то так
Исходная версия qulinxao3, :
и в чём проблема то?
отсортировал по отдельности a и b( b вообщето можно и не) всунул в приоритетную очередь от каждого ряда по наименьшей дроби ещё не расмотренной в виде пар (0 bi) где первое это индекс из a второе это знаметатель
в начале j=0 z=1 счётчик=0
и поехал вытащил из очереди очередную минимальную дробь i,d если это дубль (a*z==j*d т.е равно ранее вытащенной) то ничё иначе увеличиваем счётчик если счётчик в с выдали эту дробь в выход
j=a, z=d
сунули в очередь очередную дробь i+1,d
очередь приоритетная в корне с минимальным a/d
т.е по факту элементами очереди можно кортежи (Fraction(a,d),i)
тогда можно просто дискардит очередные кортежи у которых совпадает нулевеой элемент
если текущий это r,i=heapq.heappop(pq) то heapq.heappush(pq,(Fraction(a[i+1],r.denominator),i+1))
как то так