Автор | Сообщение |
|
| постоянный участник
|
Сообщение: 396
|
|
Отправлено: 28.09.21 16:39. Заголовок: 17 задание Демо 2022
цитата: | В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от —10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых хотя бы одно число делится на 3, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Например, для последовательности из пяти элементов: 6; 2; 9; -3; 6 — ответ: 4 11 |
| Даны ответы 2802 и 1040 Я что-то не вижу в условии? Программа выдает ответы 2802 и 1990 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) 1040 - сумма последней подходящей пары в файле. Понятно, что исправление mxx = max(mxx, x + x1) на mxx = x + x1 даст нужный результат, но откуда это следует?
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 2917
|
|
Отправлено: 28.09.21 17:26. Заголовок: oval пишет: Программ..
oval пишет: цитата: | Программа выдает ответы 2802 и 1990 |
|
У меня так же. Пара с суммой 1040 там тоже есть (945, 95), но эта сумма не максимальна.
|
|
|
|
Отправлено: 04.10.21 11:18. Заголовок: Решение на PascalABC..
Решение на PascalABC: 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. Ответ: 2802 1990
|
|
|
|