■
ドント方式の計算
n = 9 # 議席数 rt = [120, 90, 60] # 投票数 from __future__ import division, print_function import heapq r = [[-j, i, 0] for i, j in enumerate(rt)] heapq.heapify(r) while n > 0: n -= 1 p = heapq.heappop(r) p[2] += 1 p[0] *= p[2] / (p[2] + 1) heapq.heappush(r, p) r = sorted(r, key=lambda x: x[1]) print([i[2] for i in r]) >>> [4, 3, 2]