Форум » Обработка целых чисел » Не могу понять, в чём ошибка, №5068 » Ответить

Не могу понять, в чём ошибка, №5068

лана: [quote] (№ 5068) (А. Брейк) В файле 17-290.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0 до 10 000 включительно. Запишите в ответе количество троек элементов последовательности, в которых хотя бы одно число оканчивается на 1 в пятеричной системе счисления и все числа имеют длину 4 в своей шестеричной записи. Затем запишите максимальную разность между максимальным и минимальным числами в таких тройках. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности. [/quote] ссылка на документ 17-190.txt - https://kpolyakov.spb.ru/cms/files/ege-seq/17-290.txt мой код: [pre2]f = open('17-290.txt') a = [] k = 0 minss = 1000000000000000000000 maxss = 0 maxs = 0 for x in f: a.append(int(x)) for i in range(0, len(a)): if (a[ i] % 5 == 1 or a[ i-1] % 5 == 1 or a[ i-2] % 5 == 1): if ((6**0 <= a[ i] <= 6**4) and (6**0 <= a[ i-1] <= 6**4) and (6**0 <= a[ i-2] <= 6**4)): k = k + 1 maxss = max(maxss, a[ i], a[ i-1], a[ i-2]) minss = min(minss, a[ i], a[ i-1], a[ i-2]) maxs = max(maxs, maxss-minss) print(k, maxs)[/pre2] ответ получается 3439 999, на сайте - 1664 772, в чём ошибка?

Ответов - 1

Поляков: Вот решение [pre2] data = [ int(x) for x in open("17-290.txt") ] N = len(data) count, ma = 0, None for i in range(N-2): triple = data[i:i+3] if any( x % 5 == 1 for x in triple ) and \ all( int('1000',6) <= x < int('10000',6) for x in triple ): count += 1 diff = max(triple) - min(triple) if ma == None or diff > ma: ma = diff print( count, ma ) [/pre2]



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