Задача
Дома у Витека было [latex]2[/latex] одинаковых набора кубиков из английских букв, но во время очередной уборки один из кубиков затерялся. Помогите Витеку определить, какой же из кубиков отсутствует в одном из наборов.
Входные данные
В первой строке задано количество найденных Витеком кубиков [latex]n (1 ≤ n ≤ 10^5)[/latex], а во второй строке [latex]n[/latex] символов, изображённых на каждом из кубиков.
Выходные данные
Выведите букву, изображённую на потерявшемся кубике, либо сообщение [latex] «Ok»[/latex], если Витек ошибся и ни один из кубиков не потерялся.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | 5 abcac | b |
2 | 8 ryirhiyh | Ok |
3 | 3 AVA | V |
4 | 6 DjkjDk | Ok |
5 | 7 LnCsCnL | s |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> #include <string>//данная библиотека содержит методы и переменные для работы со строками using namespace std; int main() { int n; cin >> n; if (n % 2 == 0) cout << "Ok"; else { int x[200]; for ( int i = 65; i <= 122; i++) x[i] = 0; char c; while ((c = cin.get()) != EOF) x[c]++; for (int i = 'A'; i <= 'z'; i++) if (x[i] % 2 != 0) c = i; cout << c; } return 0; } |
Решение задачи
Для того, чтобы решить задачу, мы проверяем четное ли количество кубиков, найденных Витеком. Если условие выполняется, то выводим на экран сообщение с текстом [latex] «Ok»[/latex]. Если нет, то рассматриваем второй случай. Создаем массив, в котором будем хранить количество кубиков для каждой буквы. Обнуляем ячейки массива, в которых будут храниться данные. Далее мы будем считывать символы в соответствии с их числовыми кодами. После прочтения входного потока, найдем элемент массива с нечетным числом вхождений и выведем его на экран.
Ссылки
Ссылка на e-olymp
Ссылка на ideone
Принято.
Только замените в коде 65 на ‘A’, а 122 на ‘z’. Тогда будет понятно, что это за волшебные числа.