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

В файле со­дер­жит­ся по­сле­до­ва­тель­ность целых чисел. Её эле­мен­ты могут при­ни­мать целые зна­че­ния от −100 000 до 100 000

вклю­чи­тель­но.

Опре­де­ли­те ко­ли­че­ство троек по­сле­до­ва­тель­но­сти, в ко­то­рых все числа од­но­го знака, при этом про­из­ве­де­ние ми­ни­маль­но­го и мак­си­маль­но­го эле­мен­тов трой­ки боль­ше квад­ра­та ми­ни­маль­но­го эле­мен­та по­сле­до­ва­тель­но­сти, ко­то­рый окан­чи­ва­ет­ся на 15 и яв­ля­ет­ся трёхзнач­ным чис­лом.

В от­ве­те за­пи­ши­те ко­ли­че­ство най­ден­ных троек чисел, затем ми­ни­маль­ное из про­из­ве­де­ний мак­си­маль­но­го и ми­ни­маль­но­го эле­мен­тов таких троек. В дан­ной за­да­че под трой­кой под­ра­зу­ме­ва­ет­ся три иду­щих под­ряд эле­мен­та по­сле­до­ва­тель­но­сти.

За­да­ние 17

Ответ:

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

Ре­ше­ние.

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

a = [int(s) for s in open('1_17.txt')]

amin15 = min([i for i in a if (99< abs(i) <1000) and (abs(i)%100==15)])

otv=[]

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

troika = [a[i] , a[i+1] , a[i+2]]

trplus = [x for x in troika if x >= 0]

trminus = [x for x in troika if x < 0]

if len(trplus) == 3 or len(trminus) == 3:

if min(troika) * max(troika) > amin15**2:

otv.append(min(troika) * max(troika))

print(len(otv), min(otv))

 

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

 

Ответ: 3507  863808.

 

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

def под­хо­дит(трой­ка,мин15):

плюсы = [x >= 0 for x in трой­ка]

return sum(плюсы) in (0,3) and max(трой­ка) * min(трой­ка) > мин15**2

 

числа = [int(стро­ка) for стро­ка in open('1_17.txt')]

мин15 = min([x for x in числа if 100 <= abs(x) < 1000 and abs(x) % 100 == 15])

ре­зуль­та­ты = [min(числа[i:i+3]) * max(числа[i:i+3]) for i in range(len(числа) - 2) if под­хо­дит(числа[i:i+3],мин15)]

print(len(ре­зуль­та­ты),min(ре­зуль­та­ты))

 

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

f=open('1_17.txt')

a=[int(x) for x in f]

mini=10**10

answ=(10**10)

for i in range (0,len(a)):

if len(str(abs(a[i])))==3 and abs(a[i])%100==15:

mini=min(mini,a[i])

k=0

for i in range (0,len(a)-2):

if (a[i]>0 and a[i+1]>0 and a[i+2]>0) or (a[i]<0 and a[i+1]<0 and a[i+2]<0):

if max(a[i],a[i+1],a[i+2])*min(a[i],a[i+1],a[i+2])>mini**2:

k+=1

answ=min(answ,max(a[i],a[i+1],a[i+2])*min(a[i],a[i+1],a[i+2]))

print(k, answ)

Источник: ЕГЭ—2025. До­сроч­ная волна 08.04.2025. Ва­ри­ант ФИПИ