Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.04.2024
Сообщений: 17

Выведите список кандидатов, упорядоченный по убыванию числа голосов выборщиков

28.04.2024, 22:32. Показов 855. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выборы в США


Как известно, в США президент выбирается не прямым голосованием, а путём двухуровневого голосования. Сначала проводятся выборы в каждом штате, и определяется победитель выборов в данном штате. Затем проводятся государственные выборы: на этих выборах каждый штат имеет определённое число голосов — число выборщиков от этого штата. На практике все выборщики от штата голосуют в соответствии с результатами голосования внутри штата, то есть на заключительной стадии выборов в голосовании участвуют штаты, имеющие различное число голосов.

На этот раз вам известно число выборщиков от каждого штата США и результаты голосования каждого гражданина США (а также в каком штате проживает данный гражданин).

Вам необходимо подвести результаты голосования: сначала определить результаты голосования в каждом штате и определить, за кого из кандидатов отданы голоса выборщиков данного штата. Далее необходимо подвести результаты голосования выборщиков по всем штатам.

Входные данные

Первая строка входных данных содержит количество штатов в США N
(1≤N≤100000
). Далее идёт N
строк, описывающих штаты США, каждая строка состоит из названия штата и числа выборщиков от этого штата. На следующей строке задано число M
(1≤M≤100000
)— количество проголосовавших на выборах. В следующих M
строках идут записи результатов голосования по каждому из участников голосования. Одна строка соответствует одному избирателю. Записи имеют следующий вид: название штата, имя кандидата, за которого проголосовал данный избиратель. Названия штатов и имена кандидатов не содержат пробелов.

Выходные данные

Выведите список кандидатов, упорядоченный по убыванию числа голосов выборщиков, полученных за данного кандидата, а при равенстве числа голосов выборщиков — в лексикографическом порядке. После имени кандидата выведите число набранных им голосов.

Если в каком-либо штате два или более кандидатов набрали одинаковое число голосов, то все голоса выборщиков этого штата получает наименьший в лексикографическом порядке кандидат из числа победителей в этом штате.

Гарантируется, что в каждом штате проголосовал хотя бы один избиратель.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.04.2024, 22:32
Ответы с готовыми решениями:

Составить из списка кандидатов список предпочтительных кандидатов, упорядоченный по степени предпочтения
Задание 1. I “Работники и фирмы". Есть N фирм и M работников. Работники хотят устроиться на работу в одну из фирм, а фирмы хотят нанять...

Выведите фамилию, имя и отчество троих кандидатов, получивших наибольшее число голосов на выборах
Проводились выборы президента школы. В первой строке подаётся целое число N-количество проголосовавших. Каждая из последующих N строк...

Пусть шесть населенных и 5 кандидатов. Кто из кандидатов набрал больше голосов и рейтинг?
Двумерный массив. Пусть шесть населенных пунктов обозначены номерами от 1 до 6 (величина к) а 5 кандидатов - номерами от 1 до 5 (величина...

3
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
29.04.2024, 06:37
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from collections import Counter
 
def get_winner_in_state(votes_for_cand_in_state):
    res = votes_for_cand_in_state.most_common()
    max_votes_count = res[0][1]
    winners_in_state = [name for name, votes_count in res if votes_count == max_votes_count]
    return min(winners_in_state)
 
n = int(input('n = '))
electors_count_in_state = {}
res_of_state = {}
for _ in range(n):
    st_name, electors_count_s = input('название штата, число выборщиков->').split()
    electors_count_in_state[st_name] = int(electors_count_s)
    res_of_state[st_name] = Counter()
 
m = int(input('m = '))
elect_votes_for_cand = Counter()
for _ in range(m):
    st_name, cand_name = input('штат, имя кандидата->').split()
    res_of_state[st_name][cand_name] += 1
    elect_votes_for_cand[cand_name] = 0
 
for st_name in electors_count_in_state:
    winner_in_state = get_winner_in_state(res_of_state[st_name])
    elect_votes_for_cand[winner_in_state] += electors_count_in_state[st_name]
for e in elect_votes_for_cand.most_common():
    print(*e)
1
0 / 0 / 0
Регистрация: 21.04.2024
Сообщений: 17
29.04.2024, 14:24  [ТС]
idealist, спасибо, конечно, но почему то не работает

Добавлено через 18 минут
Извиняюсь. Моя ошибка. Всё работает

Добавлено через 2 часа 27 минут
idealist, но почему то сириус говорит, что неверно.
Можно ли каким-нибудь другим способом?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
29.04.2024, 16:06
Цитата Сообщение от Ди Малинин Посмотреть сообщение
но почему то сириус говорит, что неверно
А, нашел ошибку! Я не обрабатывал ситуацию, когда в каком-то штате вообще никто не голосовал. Здесь это учтено:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from collections import Counter
 
def get_winner_in_state(votes_for_cand_in_state):
    res = votes_for_cand_in_state.most_common()
    if res:
        max_votes_count = res[0][1]
        winners_in_state = [name for name, votes_count in res if votes_count == max_votes_count]
        return min(winners_in_state)
 
n = int(input('n = '))
electors_count_in_state = {}
res_of_state = {}
for _ in range(n):
    st_name, electors_count_s = input('название штата, число выборщиков->').split()
    electors_count_in_state[st_name] = int(electors_count_s)
    res_of_state[st_name] = Counter()
 
m = int(input('m = '))
elect_votes_for_cand = Counter()
for _ in range(m):
    st_name, cand_name = input('штат, имя кандидата->').split()
    res_of_state[st_name][cand_name] += 1
    elect_votes_for_cand[cand_name] = 0
 
for st_name in electors_count_in_state:
    winner_in_state = get_winner_in_state(res_of_state[st_name])
    if winner_in_state:
        elect_votes_for_cand[winner_in_state] += electors_count_in_state[st_name]
for e in elect_votes_for_cand.most_common():
    print(*e)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2024, 16:06
Помогаю со студенческими работами здесь

Классы. Из списка кандидатов составить список, упорядоченный по степени предпочтения
"Преподаватель". Профессор готов стать научным руководителем п новых студентов. Желающих студентов достаточно много, заведомо больше, чем...

Создать упорядоченный по убыванию список, который будет содержать числа, являющиеся простыми
С клавиатуры вводится несколько целых чисел. Создать упорядоченный по убыванию список, который будет содержать числа, являющиеся простыми....

Выведите на экран список партий в соответствии с убыванием количества полученных голосов
Помогите пожалуйста ! Имеется список размера n(n>1000000) с итогами выборов в Государственную думу в виде: где номер определяет голос...

Известно количество голосов, поданных за каждого из 10 кандидатов
Известно количество голосов, поданных за каждого из 10 кандидатов на пост мэра Челябинска. Напечатать список фамилий кандидатов в порядке...

Найти кандидатов с наибольшим количеством голосов и вывести их в отдельный массив
Здравствуйте !! Нужна помощь , нужно определить победителя среди кандидатов по количеству голосов , 1 ; 2 ; 3; место , и вывести их в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru