LINUX.ORG.RU

История изменений

Исправление 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))

как то так