Задача
Голоса собраны! Были опрошены математики по всему миру, и каждый из них выбрал свой любимый номер между [latex]1[/latex] и [latex]1000[/latex]. Ваша цель — подсчитать голоса и определить самый популярный номер.
Если существует несколько голосов с наибольшим количеством, то выберите наименьшее число с максимальным количеством голосов.
Входные данные
Первая строка содержит количество тестов, от [latex]1[/latex] до [latex]100[/latex] включительно. Первая строка каждого теста содержит количество голосов [latex]V (1 \leq V \leq 1000)[/latex], за которой следуют [latex]V[/latex] строк — каждая из них содержит одно число от [latex]1[/latex] до [latex]1000[/latex].
Выходные данные
Для каждого теста выведите в отдельной строке самое популярное число. Если таких чисел несколько, то выведите наименьшее число с максимальным количеством голосов.
Тесты
№ | Входные данные | Выходные данные |
1 | 2 3 42 42 19 4 7 99 99 7 |
42 7 |
2 | 1 5 11 12 13 14 15 |
11 |
3 | 2 2 1000 1000 1 3 |
1000 3 |
Код
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 31 32 33 34 |
#include <iostream> #include <algorithm> using namespace std; int main() { int testAmount, V, digit, numberOfMax, max, maxDigit, answer; cin >> testAmount; for(int i = 0; i < testAmount; i++) { int digitAmountArray[1001] = {}; maxDigit = 0; answer = 0; cin >> V; for (int k = 0; k < V; k++) { cin >> digit; if(digit > maxDigit) maxDigit = digit; digitAmountArray[digit]++; } max = digitAmountArray[0]; for (int p = 1; p <= maxDigit; p++) { if(digitAmountArray[p] > max) { max = digitAmountArray[p]; numberOfMax = p; } } for(int l = 0; l <= maxDigit; l++) { if(digitAmountArray[l] == digitAmountArray[numberOfMax]) { answer = min(numberOfMax, l); } } cout << answer << endl; } return 0; } |
Решение
На каждой итерации цикла в массиве нулей digitAmountArray увеличиваем позицию, соответствующую считываемой цифре, на один. Далее находим наибольший элемент массива — самый популярное число. Затем, проверяем, нет ли чисел с одинаковым количеством голосов. Если такие есть, выбираем меньшее из популярнейших.
Хорошо.
— Используйте, пожалуйста $\leqslant$ в формулах.
— Ссылки ведут на другую задачу, нет ссылки на код для выполнения на ideone.com или другой аналогичной системе.