Задание 27. Информатика. ЕГЭ. Поляков-2668
- Просмотры: 51
- Изменено: 23 ноября 2024
Имеется набор данных, состоящий из положительных целых чисел, каждое из которых не превышает \(1000\). Они представляют собой результаты измерений, выполняемых прибором с интервалом \(1\) минута. Требуется найти для этой последовательности контрольное значение — наименьшую сумму квадратов двух результатов измерений, выполненных с интервалом не менее, чем в \(5\) минут.
Входные данные. Даны два входных файла (файл \(A\) и файл \(B\)), каждый из которых содержит в первой строке количество чисел \(N\) (\( 1 \leqslant N \leqslant 100000\)). Каждая из следующих \(N\) строк содержит одно натуральное число, не превышающее \(10~000\).
Пример входного файла:
\(9\)
\(12\)
\(45\)
\(5\)
\(4\)
\(21\)
\(20\)
\(10\)
\(12\)
\(26\)
Для указанных входных данных искомое контрольное значение равно \(169\).
В ответе укажите два числа: сначала контрольное значение для файла \(А\), затем для файла \(B\).
Решение:
C++
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
int p2(int x) {
return x * x;
}
int pn(int x, int n) {
return n == 0 ? 1 : x * pn(x, n-1);
}
int32_t main() {
string base = "";
string fnames[] = {"27-A.txt", "27-B.txt"};
for(string fn: fnames) {
ifstream in(base + fn);
int n, mn1 = pn(10, 9), mn2 = pn(10, 9);
in >> n;
vector<int> a(n, 0);
for(int i = 0; i < n; i++)
in >> a[i];
for(int i = 0; i < n - 5; i++) {
mn1 = min(mn1, p2(a[i]));
mn2 = min(mn2, mn1 + p2(a[i+5]));
}
cout << mn2 << '\n';
}
}
Ответ: \(11009 \,\, 200\)