17 задание информатика, исправьте программу пожалуйста , ответ не совпадает
with open ('vika.txt') as f:
s = list(map(int, f.readlines()))
c = 0
min_sum = float('inf')
for i in range (len(s) - 2):
maxx = max([i for i in s if 9999 < i < 100_000 and i % 100 == 43]) ** 2
if s[i] % 100 == 43 or s[i + 1] % 100 == 43 or s[i + 2] % 100 == 43:
if (s[i] ** 2 + s[i + 1] ** 2 + s[i + 2]) <= maxx:
c += 1
min_sum = min(min_sum, sum(i ** 2 for i in s))
print(c, min_sum)
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от -100000
до 100000
включительно. Определите количество троек последовательности, в которых хотя бы один элемент является пятизначным числом и оканчивается на 43
а сумма квадратов элементов тройки не больше квадрата максимального элемента последовательности, являющегося пятизначным числом и оканчивающегося на 43
Гарантируется, что такой элемент в последовательности есть. В ответе запишите количество найденных троек, затем минимальную из сумм квадратов элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
def check(n):
n = abs(n)
return 10000 <= n < 100000 and n % 100 = 43
with open('vika.txt') as f:
s = list(map(int, f.readlines()))
c = 0
min_sum = float('inf')
maxx = max([i for i in s if check(i)]) ** 2
for i in range (len(s) - 2):
if check(s[i]) or check(s[i + 1]) or check(s[i + 2]):
v = s[i] ** 2 + s[i + 1] ** 2 + s[i + 2] ** 2
if v <= maxx:
c += 1
min_sum = min(min_sum, v)
print(c, min_sum)
Во первых, неправильно обрабатываются отрицательные числа.
Во вторых, в тройках ты не проверяешь, что число является пятизначным.
В третьих, у тебя совершенно ошибочное вычисление min_sum.
P.S. А ещё s[i + 2] в квадрат не возведено.