是时候...点票了!
今天,我在整个国家举行地方选举。在此,使用D'Hondt方法确定每个宴会的席位数量。您的目标是实现一个程序或功能,该程序或功能将确定每个方以最少的字节数获得多少席位。
对于这种方法,要分配固定数量的席位,方法是这样的:
- 每一方都分配有一个可变数字,该数字从其获得的票数开始。
- 然后将第一个席位分配给变量中具有最大价值的政党,然后该政党的那个价值将成为其投票总数除以
1+seats,四舍五入后,seats该席位中已有的席位数(因此,首先,他们的选票将被2除,并在获得第二个席位后被3除。 - 此后,再次比较当事方的票数。该过程继续进行,直到分配了所有席位。
如果最高数目是两个或多个参与方之间的平局,则它是随机解决的(必须是随机的,它不能只是列表中两个中的第一个)。
输入值
您将收到一个数字N,该数字将指示可用席位的数量,以及各方喜欢的任何格式的投票列表。例:
25
12984,7716,13009,4045,1741,1013
输出量
您应该输出每方获得席位的列表。在上面的示例中,它将类似于
8,5,9,2,1,0
它们的顺序应与输入中各方的顺序相同。
例子
5
3,6,1
outputs: 2,3,0
135
1116259,498124,524707,471681,359705,275007,126435
outputs: 45,20,21,19,14,11,5
奖金
如果以参与方的名字作为输入并在输出中提供他们,则获得-20%的奖励,例如:
25
cio:12984,pcc:7716,irc:13009,icb:4045,cub:1741,bb:1013
outputs
cio:8
pcc:5
irc:9
icb:2
cub:1
bb:0
我觉得我们已经做了类似的事情
—
edc65
我在搜索中找不到任何类似的内容...但是,如果您找到任何内容,我将对其进行更改或删除问题,没问题!
—
2015年
@rcrmn您的最后一个示例有问题。也许您的意思是总共153个座位,而不是135个
—
。– Tyilo
@Tyilo对!我在测试程序中写错了,并且未经仔细检查就复制了答案。现在已修复。谢谢!
—
rorlork 2015年
谢谢@Jakube,这是我用来计算的程序的问题,该程序返回带有标签的座位中有序的输出。丹尼斯,您可以按任何顺序退货,因为标签可以用作识别器。如果您更方便,则可以假定它只有字母。
—
rorlork 2015年