투표를 세는 시간입니다!
오늘날 우리 나라에는 지방 선거가 있습니다. 여기서 각 파티의 좌석 수는 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
나는 우리가 이미 이와 같은 것을
—
느꼈다
검색에서 똑같은 것을 찾을 수 없었습니다.하지만 찾은 내용이 있으면 변경하거나 질문을 제거해도 문제 없습니다!
—
rorlork
@rcrmn 마지막 예제에 문제가 있습니다. 아마 당신은 135 대신 총 153 석을 의미
—
했을
@ 타일로! 내 테스트 프로그램에서 잘못 작성하고 다시 확인하지 않고 답변을 복사했습니다. 이제 수정되었습니다. 감사합니다!
—
rorlork
감사합니다 @Jakube, 그것은 계산에 사용한 프로그램의 문제였습니다. Dennis는 라벨이 식별기 역할을하므로 순서에 상관없이 반품 할 수 있습니다. 더 편한 경우 글자 만 가지고 있다고 가정 할 수 있습니다.
—
rorlork