Задания
Версия для печати и копирования в MS Word
Тип 17 № 59722
i

В файле на­хо­дит­ся ряд целых чисел.

За­да­ние 17

Эле­мен­ты ряда могут при­ни­мать целые зна­че­ния в диа­па­зо­не [−10000; 10000]. Опре­де­ли­те ко­ли­че­ство троек эле­мен­тов по­сле­до­ва­тель­но­сти, в ко­то­рой толь­ко одно число трех­знач­ное, а сумма трой­ки мень­ше наи­боль­ше­го числа, окан­чи­ва­ю­ще­го­ся на 17. В дан­ной за­да­че под трой­кой под­ра­зу­ме­ва­ет­ся три иду­щих под­ряд эле­мен­та по­сле­до­ва­тель­но­сти.

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние на языке Python.

count = 0

f = open('1_17.txt')

l = [int(i) for i in f]

max_dvy = 0

for i in range(len(l)):

if abs(l[i]) % 100 == 17:

max_dvy = max(max_dvy, l[i])

for i in range(len(l) - 2):

c = 0

s = [l[i], l[i+1], l[i+2]]

for x in s:

if 99 < abs(x) < 1000:

c += 1

if c == 1 and sum(s) < max_dvy:

count += 1

print(count)

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла ответ  — 1684.

 

Ответ: 1684.

 

При­ме­ча­ние.

Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

При­ведём ре­ше­ние Мак­си­ма Гри­го­рье­ва на языке Python.

with open('1_17.txt') as f:

s = [int(x) for x in f.readlines()]

m = max(x for x in s if str(x).endswith('17'))

count = 0

 

def f(arg):

return len(str(abs(arg))) == 3

 

for i in range(len(s) - 2):

p = [s[i + x] for x in range(3)]

if sum(f(x) for x in p) == 1 and sum(p) < m:

count += 1

print(count)

 

При­ведём ре­ше­ние Ильи Ан­дри­а­но­ва на языке Python.

M = [int(x) for x in open('1_17.txt')]

A = [x for x in M if str(x)[-2:] == '17']

cnt = 0

for i in range(len(M)-2):

x, y, z = M[i:i+3]

D = [a for a in (x, y, z) if len(str(abs(a))) == 3]

if len(D) == 1:

if (x + y + z) < max(A):

cnt += 1

print(cnt)

Источник: ЕГЭ по ин­фор­ма­ти­ке 19.06.2023. Ос­нов­ная волна