Форум » Обработка целых чисел » 17 задание Демо 2022 » Ответить

17 задание Демо 2022

oval: [quote]В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от —10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых хотя бы одно число делится на 3, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Например, для последовательности из пяти элементов: 6; 2; 9; -3; 6 — ответ: 4 11[/quote] Даны ответы 2802 и 1040 Я что-то не вижу в условии? Программа выдает ответы 2802 и 1990 [pre2] f = open("17.txt") x = int(f.readline()) count = 0 mxx = -20001 for line in f: x1 = int(line) if x % 3 == 0 or x1 % 3 == 0: count += 1 mxx = max(mxx, x + x1) x = x1 print(count, " ", mxx) [/pre2] 1040 - сумма последней подходящей пары в файле. Понятно, что исправление mxx = max(mxx, x + x1) на mxx = x + x1 даст нужный результат, но откуда это следует?

Ответов - 2

Поляков: oval пишет: Программа выдает ответы 2802 и 1990 У меня так же. Пара с суммой 1040 там тоже есть (945, 95), но эта сумма не максимальна.

ivackov.sergey: Решение на PascalABC: [pre2] var a:array [1..10000] of integer; x,n,count:integer; begin assign (input, '17.txt'); reset (input); n:=0; while not eof(input) do begin n+=1; readln(x); a[n]:=x; end; var maxi:=-100000000; for var i:=1 to n-1 do begin if (a[ i] mod 3 = 0) or (a[ i+1] mod 3 = 0) then begin inc(count); maxi:=max(a[ i]+a[ i+1],maxi); end; end; count.Print; maxi.Println; end. [/pre2] Ответ: 2802 1990



полная версия страницы