Враховуючи перелік населення кожної держави, виведіть, від найбільшої до найменшої, кількість голосів, яку отримує держава в колегії виборців.
Вхідні дані: Перше число представляє загальну кількість голосів для розподілу; за ним слідує список та населення. У цьому прикладі використовуються абревіатури станів, але будь-яке ім’я, що містить великі і малі літери, може бути використане. Ви можете приймати це у будь-якому форматі, який вам подобається, якщо єдиною інформацією є абревіатура держави та її кількість.
Введення може сприйматися як аргумент функції або будь-яким іншим способом.
Приклад (можливий) вхід: 538 [[CA 38000000], [NH 1300000] etc.]
Результат: Виведіть у певному форматі кількість голосів, яку отримує кожна держава. Упорядкуйте держави від найбільшого до найменшого. Якщо два штати мають однакову кількість голосів, впорядкуйте, залежно від того, яке ім'я буде першим у словнику (який вперше в алфавітному порядку).
Перш ніж знайти кількість голосів, спочатку перевірте, чи є у списку вхідних штатів названий ДК, а якщо є, надайте державі 3 голоси, незалежно від кількості населення. Потім видаліть його зі списку і призначте решту голосів так, ніби DC не існувало.
Кількість голосів у виборчій колегії визначається як сума кількості сенаторів та представників. Кожна держава отримує два сенатори, тому віднімайте вдвічі більше штатів від загальної кількості (538, у прикладі введення), щоб отримати кількість представників. Призначте для кожної держави одного представника для початку. Потім виконайте наступний процес:
Призначте кожній державі число, яке
Aвизначається таким,P/sqrt(2)деPзнаходиться населення.Сортуйте штати відповідно до їх значень
A.Призначте першому штату (той, у кого найбільше
A) ще одного представника.Перепризначення значень
A, якA = P/(sqrt(n)*sqrt(n + 1)), деnпоточна кількість представників, призначених державі.Поверніться до кроку 2. Повторіть, поки всі представники не закінчаться.
Приклад (можливо) Вихід: {CA: 518, NH: 20}. Вихідні дані не повинні бути у такому форматі, але повинні містити ту саму інформацію.
Зауважте, що якщо неможливо присвоїти голоси на законних підставах, оскільки їх менше, ніж 3*(# of states)голосів, друкуйте все, що завгодно. Ви можете зірватися, викинути помилку тощо.
Тестові приклади:
538 [['CA' 38000000], ['NH' 1300000]] --> CA: 518, NH: 20
538 [['NH' 1300000], ['CA' 38000000]] --> CA: 518, NH: 20 (must be in order from greatest to least!)
538 [['DC' 1000000], ['RH' 1]] --> RH: 535, DC: 3
100 [['A', 12], ['B', 8], ['C', 3]] --> A: 51, B: 35, C: 14
100 [['A', 12], ['B', 8], ['C', 3], ['D', 0]]: --> [49, 34, 14, 3] (yes, even states with no population get votes)
2 [['A', 1]] --> aasdfksjd;gjhkasldfj2fkdhgas (possible output)
12 [['A', 1], ['B', 2], ['C', 3], ['D', 4]] --> A: 3, B: 3, C: 3, D: 3
42 [['K', 123], ['L', 456], ['M', 789]] --> M: 23, L: 14, K: 5
420 [['K', 123], ['L', 456], ['M', 789]] --> M: 241, L: 140, K: 39
135 [['C', 236841], ['D', 55540], ['G', 70835], ['K', 68705], ['M', 278514], ['Ms', 475327], ['Nh', 141822], ['Nj', 179570], ['Ny', 331589], ['Nc', 353523], ['P', 432879], ['R', 68446], ['Sc', 206236], ['Ve', 85533], ['Vi', 630560]] --> Vi: 20, Ms: 16, P: 14, Nc: 12, Ny: 12, M: 10, C: 9, Sc: 8, Nj: 7, Nh: 6, Ve: 5, D: 4, G: 4, K: 4, R: 4
A, якA = P/(sqrt(n)*sqrt(n + 1)), деnпоточна кількість членів, призначених державі". слід змінити на "Перепризначити значенняA, якA = P/(sqrt(n)*sqrt(n + 1)), деnпоточна кількість представників, призначених державі." Це мене відкинуло.