Задача 5924. Источник: Поляков. Задание КИМ 17
(М. Ишимов) В файле 17-352.txt содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 10 000 включительно. Определите количество пар последовательности, в которых оба числа не меньше всех чисел последовательности, которые кратны 73. Гарантируется, что такой элемента в последовательности есть. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Решение
Python
f = open("17-352.txt")
d = [int(i) for i in f]
mx73 = max(filter(lambda x: x % 73 == 0, d))
k = 0
mx = 0
for i in range(1, len(d)):
if d[i] >= mx73 and d[i - 1] >= mx73:
k += 1
mx = max(mx, d[i] + d[i - 1])
print(k, mx)
PascalABC
var
k, max, max73, n1, n2: Integer;
f: TEXT;
begin
Assign(f, '17-352.txt');
Reset(f);
max73 := 0;
while not eof(f) do
begin
readln(f, n1);
if (n1 mod 73 = 0) and (n1 > max73) then
max73 := n1;
end;
Reset(f);
k := 0;
max := 0;
Readln(f, n1);
while not eof(f) do
begin
Readln(f, n2);
if (n1 >= max73) and (n2 >= max73) then
begin
k := k + 1;
if n1 + n2 > max then
max := n1 + n2;
end;
n1 := n2;
end;
Writeln(k, ' ', max);
end.
C++
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f;
f.open("17-352.txt");
int n1, n2, max73 = 0;
while (f >> n1)
if (n1 % 73 == 0 && n1 > max73)
max73 = n1;
int k = 0, max = 0;
f.close();
f.open("17-352.txt");
f >> n1;
while (f >> n2)
{
if (n1 >= max73 && n2 >= max73)
{
k++;
if (max < n1 + n2)
max = n1 + n2;
}
n1 = n2;
}
cout << k << " " << max << endl;
}
Ответ
161 19678