Задание 17. Информатика. ЕГЭ. Поляков-7564

Просмотры: 530
Изменено: 24 ноября 2024

(ЕГЭ-2024) В файле содержится последовательность целых чисел, не превышающих по модулю \(100~000\). Определите количество троек элементов последовательности, в которых хотя бы два элемента из трёх оканчиваются на \(7\) и являются четырёхзначными числами, а сумма всех элементов тройки больше максимального элемента последовательности, оканчивающегося на \(7\) и являющегося четырехзначным числом. В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три подряд идущих элемента последовательности.

Файл с данными

Решение:

Python


v = [int(x) for x in open('17-409.txt')]
mx7 = max([x for x in v if abs(x) % 10 == 7 and 999 < abs(x) < 10000])
mxsum = -10**10
q = 0
for x, y, z in zip(v, v[1:], v[2:]):
    t = int(abs(x) % 10 == 7 and 999 < abs(x) < 10000)
    t += int(abs(y) % 10 == 7 and 999 < abs(y) < 10000)
    t += int(abs(z) % 10 == 7 and 999 < abs(z) < 10000)
    s = sum([x, y, z])
    if t > 1 and s > mx7:
        q += 1
        mxsum = max(mxsum, s)
print(q, mxsum)

C++


#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

int32_t main() {
    vector<int> v;
    ifstream in("17-409.txt");
    int tmp, mx7 = -1000 * 1000, q = 0, mxsum = -1000 * 1000;

    while (!in.eof())
    {
        in >> tmp;
        v.push_back(tmp);
        if (abs(tmp) % 10 == 7 && abs(tmp) > 999 && abs(tmp) < 10000)
            mx7 = max(mx7, tmp);
    }

    for (int i = 0; i < v.size() - 2; i++) {
        int x = int(abs(v[i]) % 10 == 7 && abs(v[i]) > 999 && abs(v[i]) < 10000);
        x += int(abs(v[i+1]) % 10 == 7 && abs(v[i+1]) > 999 && abs(v[i+1]) < 10000);
        x += int(abs(v[i+2]) % 10 == 7 && abs(v[i+2]) > 999 && abs(v[i+2]) < 10000);
        int s = v[i] + v[i+1] + v[i+2];
        if(x > 1 && s > mx7) {
            q++;
            mxsum = max(mxsum, s);
        }
    }
    
    cout << q << " " << mxsum << '\n';
}

Ответ: \(6 \,\, 84385\)

Видеоразбор