Форум » Обработка целых чисел » ЕГЭ 17 задача 4683 из генератора » Ответить

ЕГЭ 17 задача 4683 из генератора

xarhont: (№ 4683) В файле 17-1.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите количество троек, в которых хотя бы два из трёх элементов меньше, чем среднее арифметическое всех чисел в файле, и десятичная запись хотя бы одного из трёх элементов оканчивается на 14. В ответе запишите два числа: сначала количество найденных троек, а затем – максимальную сумму элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности. Ответ, указанный на сайте, можно получить следующим кодом. [pre2] with open('4683.txt') as f: sp = [int(x) for x in f.readlines()] mx = - 10**9 sr = sum(sp)/len(sp) count = 0 for i in range(len(sp)-2): k = (sp[ i] < sr) + (sp[i+1] < sr) + (sp[i+2] < sr) l = (sp[ i] % 100 == 14) + (sp[i+1] % 100 == 14) + (sp[i+2] % 100 == 14) if k >= 2 and l > 0: count += 1 mx = max(mx,sp[ i]+sp[i+1]+sp[i+2]) print(count, mx) [/pre2] Но в коде не учтено, что остаток от деления отрицательных чисел выводится некорректно. Например: -114 % 100 выведет 86. И получается что в задаче их не учитывают, а не должны. Конкретно ошибка в строке: [pre2] l = (sp[ i] % 100 == 14) + (sp[i+1] % 100 == 14) + (sp[i+2] % 100 == 14)[/pre2] А должен быть добавлен модуль чисел: [pre2] l = (abs(sp[ i]) % 100 == 14) + (abs(sp[i+1]) % 100 == 14) + (abs(sp[i+2]) % 100 == 14)[/pre2] Тогда получится ответ, отличный от ответа на сайте.

Ответов - 1

Поляков: Вы правы, спасибо. Ответ исправлен.



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