En un parlament hi ha partits polítics, als que ens referirem com , , , . El partit polític té escons. Les lleis parlamentàries fixen que, per tal que una votació sigui aprovada, cal que hi hagi un mínim de vots favorables, on és anomenada la quota del parlament. Així doncs, una coalició de partits és guanyadora si (assumirem que els membres d’un partit segueixen la disciplina de vot); i que és perdedora altrament.
L’índex de poder de Banzhaf és una manera de quantificar el poder d’un partit polític en les votacions. Es pot calcular de la forma següent:
Es llisten totes les coalicions guanyadores.
En cadascuna d’aquestes coalicions, s’identifiquen els partits crítics. Un partit és crític en una coalició guanyadora si, sense aquest partit, la coalició passa a ser perdedora.
L’índex de poder d’un partit és el nombre de vegades que aquest partit és crític dividit pel nombre de vegades que qualsevol partit és crític.
Per exemple, si , , , i , hi ha tres coalicions guanyadores:
, en la qual tots dos són crítics (ni ni són coalicions guanyadores).
, en la qual tots dos són crítics (ni ni són coalicions guanyadores).
, en la qual només és crític (perquè tant com són guanyadores, però no ).
En total, és crític 3 cops, és crític 1 cop, i és crític cop. Com que el nombre de vegades que qualsevol partit és crític és , els índexs de poder dels partits , i són , i , respectivament.
Un politòleg vol calcular els índexs de poder dels partits del parlament, però no se’n surt. Podeu calcular-los-hi vosaltres?
L’entrada consisteix en diversos casos. Cada cas comença amb , la quota, i , el nombre de partits. A continuació vénen nombres . Podeu suposar que , que per tot , i que , on . En particular, això garanteix que sempre hi haurà almenys un partit crític.
Per cada cas, escriviu línies amb els índexs de poder dels partits , , , . Escriviu els índexs com a fracció irreductible, seguint el format dels jocs de prova públics. Acabeu cada cas amb una línia amb 10 guions.
Per a escriure les fraccions irreductibles, podeu fer servir la funció math.gcd de la llibreria math de Python.
La solució esperada d’aquest problema és una programació dinàmica amb cost , on , tot i que es pot resoldre més eficientment.
Input
8 3 6 3 2 8 3 8 3 2 51 3 50 49 1 6 4 4 3 2 1 36 4 20 17 16 3 17 4 13 12 6 2 16 5 7 6 3 3 2 65 5 47 46 17 16 2 58 6 31 31 28 21 2 2
Output
3/5 1/5 1/5 ---------- 1/1 0/1 0/1 ---------- 3/5 1/5 1/5 ---------- 5/12 1/4 1/4 1/12 ---------- 5/12 1/4 1/4 1/12 ---------- 1/3 1/3 1/3 0/1 ---------- 3/8 3/8 1/8 1/8 0/1 ---------- 1/3 7/27 5/27 1/9 1/9 ---------- 1/3 1/3 1/3 0/1 0/1 0/1 ----------