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

В файле со­дер­жит­ся по­сле­до­ва­тель­ность на­ту­раль­ных чисел, каж­дое из ко­то­рых не пре­вы­ша­ет 100 000. Опре­де­ли­те ко­ли­че­ство троек эле­мен­тов по­сле­до­ва­тель­но­сти, в ко­то­рых ровно два из трёх эле­мен­тов яв­ля­ют­ся трёхзнач­ны­ми чис­ла­ми, а сумма эле­мен­тов трой­ки не боль­ше мак­си­маль­но­го эле­мен­та по­сле­до­ва­тель­но­сти, окан­чи­ва­ю­ще­го­ся на 13. Га­ран­ти­ру­ет­ся, что в по­сле­до­ва­тель­но­сти есть хотя бы одно число, окан­чи­ва­ю­ще­е­ся на 13. В от­ве­те за­пи­ши­те ко­ли­че­ство най­ден­ных троек чисел, затем мак­си­маль­ную из сумм эле­мен­тов таких троек. В дан­ной за­да­че под трой­кой под­ра­зу­ме­ва­ет­ся три иду­щих под­ряд эле­мен­та по­сле­до­ва­тель­но­сти.

За­да­ние 17

Ответ:

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

Ре­ше­ние.

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

f = open('17_2024.txt')

s = f.readlines()

for i in range(len(s)):

s[i] = int(s[i])

count = 0

maxi = 0

maxsum = 0

for i in range(len(s)):

if abs(s[i]) % 100 == 13:

maxi = max(maxi, s[i])

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

k1 = 0

k2 = 0

k3 = 0

c1 = abs(s[i-2])

c2 = abs(s[i-1])

c3 = abs(s[i])

while c1 > 0:

k1 += 1

c1 //= 10

while c2 > 0:

k2 += 1

c2 //= 10

while c3 > 0:

k3 += 1

c3 //= 10

if (k1 == 3 and k2 == 3 and k3 != 3) or (k1 == 3 and k2 != 3 and k3 == 3) or (k1 != 3 and k2 == 3 and k3 == 3):

if s[i-2] + s[i-1] + s[i] <= maxi:

count += 1

maxsum = max(maxsum, s[i-2] + s[i-1] + s[i])

print(count, maxsum)

 

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

 

Ответ: 959  97471.

 

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

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

 

При­ведём ре­ше­ние Вик­то­рии Зи­бе­ро­вой на языке Python.

file=open('17.txt').readlines()

arrnum=[int(c) for c in file]

maxnum=98413

k=0

maxsumma=0

for index in range(0,len(arrnum)-2):

if(arrnum[index]+arrnum[index+1]+arrnum[index+2]<=maxnum) and (((len(str(arrnum[index]))==3) and (len(str(arrnum[index+1]))==3) and (len(str(arrnum[index+2]))!=3)) or ((len(str(arrnum[index]))==3) and (len(str(arrnum[index+1]))!=3) and (len(str(arrnum[index+2]))==3)) or ((len(str(arrnum[index]))!=3) and (len(str(arrnum[index+1]))==3) and (len(str(arrnum[index+2]))==3))):

k+=1

maxsumma=max(arrnum[index]+arrnum[index+1]+arrnum[index+2],maxsumma)

print(k,maxsumma)

 

При­ведём ре­ше­ние Мак­си­ма Фа­ти­хо­ва на языке Python.

f = open('17_2024.txt')

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

max_s = max([s[x] for x in range(len(s)) if s[x] % 100 == 13])

count = 0

list_new = []

l = []

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

l = sorted([s[i],s[i + 1],s[i + 2]])

if ((len(str(l[0])) == 3 and len(str(l[1])) == 3 and len(str(l[2])) != 3)

or (len(str(l[1])) == 3 and len(str(l[2])) == 3 and len(str(l[0])) != 3)

or (len(str(l[2])) == 3 and len(str(l[0])) == 3 and len(str(l[1])) != 3)) \

and (l[2] + l[1] + l[0]) <= max_s:

list_new.append(l[2] + l[1] + l[0])

print(len(list_new),max(list_new))

 

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

f=open('17_2024.txt')

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

mx13=max([i for i in a if i%100==13])

c=mx=0

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

t=0

if len(str(a[i]))==3:t+=1

if len(str(a[i+1]))==3:t+=1

if len(str(a[i+2]))==3:t+=1

if t==2 and a[i]+a[i+1]+a[i+2]<=mx13:

c+=1

mx=max(mx, a[i]+a[i+1]+a[i+2])

print(c, mx)

 

 

При­ведём ре­ше­ние Дмит­рий Аль­цев на языке Python.

f = open('17_2024.txt')

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

s = 0

mx = 0

p = 0

def f(a,b,c):

m = [len(str(a)),len(str(b)),len(str(c))]

return m.count(3)

 

for b in range(len(a)):

if a[b] % 100 == 13:

p = max(p, a[b])

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

if (f(a[i],a[i+1],a[i+2]) == 2) and ((a[i] + a[i+1] + a[i+2]) <= p):

s += 1

mx = max(mx,(a[i] + a[i+1] + a[i+2]))

print(s,mx)

 

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

a = [int(s) for s in open('17_2024.txt')]

max13 = max([x for x in a if x%100==13])

b = [sum(a[i:i+3]) for i in range(len(a)-2) if sum([100 <= x < 1000 for x in a[i:i+3]])==2 and sum(a[i:i+3]) <= max13]

print(len(b),max(b))

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2024 по ин­фор­ма­ти­ке