Файл содержит последовательность неотрицательных целых чисел, не превышающих 10 000. Назовём парой два идущих подряд элемента последовательности. Определите количество пар, в которых хотя бы один из двух элементов делится
Например, в последовательности
Ответ:
Решим задачу перебором. Приведём решение данной задачи на языке PascalABC:
var
x, y, count, maxsum: integer;
average: real;
f: text;
begin
assign(f,'C:\17.txt');
reset(f);
count := 0;
average := 0;
while not eof(f) do begin
readln(f, x);
if x mod 2 = 0 then begin
average := average + x;
count := count + 1;
end;
end;
close(f);
average := average / count;
count := 0;
maxsum := 0;
reset(f);
readln(f, x);
while not eof(f) do begin
readln(f, y);
if ((x mod 3 = 0) or (y mod 3 = 0)) and ((x < average) or (y < average)) then begin
count := count + 1;
if (x + y > maxsum) then maxsum := x + y;
end;
x := y;
end;
writeln(count, ' ', maxsum);
end.
Приведём решение Николая Чуркина (Тимашевск) на языке Python.
f = open('17.txt')
a = [int(i) for i in f]
count = 0
mx = 0
s = 0
n = 0
for i in range(len(a)):
if (a[i] % 2 == 0):
s += a[i]
n += 1
x = s / n
for i in range(len(a) - 1):
if ((a[i] % 3 == 0) or (a[i + 1] % 3 == 0)) and ((a[i] < x) or (a[i + 1] < x)):
count += 1
mx = max(mx, a[i] + a[i + 1])
print(count, mx)
Результат работы программы — 2288 14875.
Ответ: 2288 14875.
Приведём решение Юрия Лысакова на языке Python.
f = open('17.txt')
b = [int(i) for i in f]
c = [int(x) for x in b if int(x)%2 == 0]
t1 = sum(c) / len(c)
n, max1 = 0,0
for j in range(0,len(b)-1):
if ((b[j] % 3 == 0) or (b[j + 1] % 3 == 0)) and ((b[j] < t1) or (b[j + 1] < t1)):
n += 1
max1 = max(max1,b[j]+b[j+1])
print(n,'',max1)

