Задание 27. Информатика. ЕГЭ. Поляков-2674
- Просмотры: 58
- Изменено: 11 октября 2024
(Д.В. Богданов) Имеется набор данных, состоящий из положительных целых чисел. Необходимо определить количество пар элементов \((a_i, \, a_j)\) этого набора, в которых \(1 \leqslant i < j \leqslant N\) и сумма элементов кратна \(12\).
Входные данные. Даны два входных файла (файл \(A\) и файл \(B\)), каждый из которых содержит в первой строке количество чисел \(N\) \((1 \leqslant N \leqslant 100000)\). Каждая из следующих \(N\) строк содержит одно натуральное число, не превышающее \(10~000\).
Пример входного файла:
\(5\)
\(7\)
\(5\)
\(6\)
\(12\)
\(24\)
Для указанных входных данных количество подходящих пар должно быть равно \(2\). В приведённом наборе имеются две пары \((7, \, 5)\) и \((12, \, 24)\), сумма элементов которых кратна \(12\).
В ответе укажите два числа: сначала количество подходящих пар для файла \(А\), затем для файла \(B\).
Решение:
C++
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int32_t main() {
string base = "";
string fnames[] = {"27-A.txt", "27-B.txt"};
for (string fn: fnames) {
ifstream in(base + fn);
int N, tmp, p = 0;
int r[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
in >> N;
in >> tmp;
r[tmp % 12]++;
for(int i = 1; i < N; i++) {
in >> tmp;
p += r[tmp % 12 ? 12 - tmp % 12 : 0];
r[tmp % 12]++;
}
cout << p << '\n';
}
}
Ответ: \(17 \,\, 150016535\)