Тип 17 № 37350 

Обработки числовой последовательности. Задания для подготовки
i
Решение. Сначала считаем все числа из файла в массив. Для каждой пары будем проверять, кратно ли 3 произведение элементов пары и нечётна ли сумма элементов пары. Если произведение кратно 3, а сумма элементов нечётна, будем увеличивать значения счётчика count и проверять, больше ли сумма элементов пары текущей максимальной суммы. Если сумма элементов пары больше текущей максимальной суммы, будем обновлять значение переменной maxsum.
Приведём решение задачи на языке Pascal.
var
i, j: integer;
count: longint;
maxsum: integer;
arr: array[1..10000] of integer;
f: text;
begin
assign(f,'C:\17.txt');
reset(f);
maxsum := 0;
count := 0;
for i := 1 to 10000 do readln(f, arr[i]);
for i := 1 to 10000 - 1 do
for j := i + 1 to 10000 do begin
if ((arr[i] * arr[j]) mod 3 = 0) and ((arr[i] + arr[j]) mod 2 <> 0) then begin
count := count + 1;
if arr[i] + arr[j] > maxsum then maxsum := arr[i] + arr[j];
end;
end;
writeln(count, ' ', maxsum);
end.
Приведём решение Николая Чуркина (Тимашевск) на языке Python.
count = m = 0
f = open('17.txt')
l = [int(i) for i in f]
for i in range(len(l) - 1):
for j in range(i + 1, len(l)):
if (l[i] + l[j]) %2 != 0 and (l[i] * l[j]) % 3 == 0:
count += 1
m = max(m, l[i] + l[j])
print(count, m)
В результате работы данного алгоритма при вводе данных из файла ответ — 13931722 19993.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Александра Конкина на языке Java.
int count = 0;
int maxSum = 0;
List lines = Files.readAllLines(Paths.get("17.txt")); int[] numbers = lines.stream().mapToInt(Integer::parseInt).toArray();
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = i + 1; j < numbers.length; j++) {
int sum = numbers[i] + numbers[j];
int product = numbers[i] * numbers[j];
if (sum % 2 != 0 && product % 3 == 0) {
count++;
maxSum = Math.max(maxSum, sum);
}
}
}
System.out.println(count);
System.out.println(maxSum);
Ответ: 13931722&19993