Her devletin nüfusunun bir listesi göz önüne alındığında, devletin seçim kolejinde aldığı oyların sayısı en azdan en azına çıkar.
Girdi: İlk sayı dağıtılacak toplam oy sayısını temsil eder; arkasından bir popülasyon ve liste gelir. Bu örnekte, durumlar için kısaltmalar kullanılmıştır, ancak büyük ve küçük harfler içeren herhangi bir ad kullanılabilir. İçerdiği tek bilgi eyaletin kısaltması ve nüfusu olduğu sürece bunu istediğiniz formatta alabilirsiniz.
Girdi, bir işleve bağımsız değişken olarak veya istediğiniz şekilde alınabilir.
Örnek (olası) giriş: 538 [[CA 38000000], [NH 1300000] etc.]
Çıktı: Çıktı, bir biçimde, her durumun aldığı oy sayısı. Devletleri büyükten küçüğe sıralayın. İki eyalette aynı sayıda oy varsa, sözlükte hangi isme göre birinci olursa (alfabetik olarak önce gelir).
Oy sayısını bulmadan önce, girişler listesinde DC adında bir devlet olup olmadığını kontrol edin ve varsa nüfusa bakılmaksızın devlete 3 oy verin. Ardından, listeden kaldırın ve geri kalan oyları DC yokmuş gibi atayın.
Seçim yüksekokulundaki oyların sayısı senatör ve temsilci sayısının toplamı olarak tanımlanır. Her eyalet iki senatör alır, bu yüzden temsilci sayısını almak için toplamdan iki kez eyalet sayısının (örnek girdide 538) çıkarılması. Başlamak için her eyalete bir temsilci atayın. Ardından, aşağıdaki işlemi gerçekleştirin:
Her duruma , nüfusun nerede olduğu
A
olarak tanımlanan bir sayı atayın .P/sqrt(2)
P
Durumları değerlerine göre sıralayın
A
.İlk durumu (en büyük
A
olanı) bir temsilci daha atayın .Eyalete atanan geçerli temsilci sayısının değerini olduğu
A
gibi yeniden atayın .A = P/(sqrt(n)*sqrt(n + 1))
n
2. adıma geri dönün. Tüm temsilciler bitene kadar tekrarlayın.
Örnek (mümkün olduğunda) çıkışı: {CA: 518, NH: 20}
. Çıktının bu biçimde olması gerekmez, ancak aynı bilgileri içermesi gerekir.
Oyların daha az olması nedeniyle oyları yasal olarak atamanız mümkün değilse 3*(# of states)
, istediğinizi yazdırın. Çökebilir, hata verebilir vb.
Test senaryoları:
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
olarak,A = P/(sqrt(n)*sqrt(n + 1))
nerede,n
devlete tahsis üyelerin güncel sayıdır." " Eyalete atanan mevcut temsilci sayısı nerede olduğuA
gibi değerlerini yeniden ata" olarak değiştirilmelidir . Bu beni attı.A = P/(sqrt(n)*sqrt(n + 1))
n