Задание 27. Информатика. ЕГЭ. Поляков-2667
- Просмотры: 72
- Изменено: 23 ноября 2024
Имеется набор данных, состоящий из положительных целых чисел, каждое из которых не превышает \(1000\). Требуется найти для этой последовательности контрольное значение — наибольшее число \(R\), удовлетворяющее следующим условиям:
— \(R\) — произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных, но равных по величине элементов допускаются);
— \(R\) делится на \(7\) и не делится на \(49\).
Если такое произведение получить невозможно, считается, что контрольное значение \(R = 1\).
Входные данные. Даны два входных файла (файл \(A\) и файл \(B\)), каждый из которых содержит в первой строке количество чисел \(N\) (\(1 \leqslant N \leqslant 100000\)). Каждая из следующих \(N\) строк содержит одно натуральное число, не превышающее \(10~000\).
Пример входного файла:
\(6\)
\(60\)
\(17\)
\(3\)
\(7\)
\(9\)
\(60\)
Для указанных входных данных искомое контрольное значение равно \(420\).
В ответе укажите два числа: сначала контрольное значение для файла \(А\), затем для файла \(B\).
Решение:
C++
#include<iostream>
#include<fstream>
#include<string>
#include<algorithm>
using namespace std;
int32_t main() {
string base = "";
string fnames[] = {"27-7a.txt", "27-7b.txt"};
for (string fn: fnames) {
ifstream in(base + fn);
int n, n7 = 0, nm = 0;
in >> n;
for(int i = 0; i < n; i++) {
int tmp;
in >> tmp;
if (tmp % 7)
nm = max(nm, tmp);
else if (tmp % 49)
n7 = max(n7, tmp);
}
if (n7)
cout << n7 * nm << '\n';
else
cout << "1\n";
}
}
Ответ: \(692286 \,\, 952567\)