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

Файл со­дер­жит по­сле­до­ва­тель­ность на­ту­раль­ных чисел, не пре­вы­ша­ю­щих 100 000. Назовём трой­кой три иду­щих под­ряд эле­мен­та по­сле­до­ва­тель­но­сти.

Опре­де­ли­те ко­ли­че­ство троек, для ко­то­рых вы­пол­ня­ют­ся сле­ду­ю­щие усло­вия:

—  в трой­ке есть четырёхзнач­ные числа;

—  в трой­ке не более од­но­го числа, у ко­то­ро­го оста­ток от де­ле­ния на 5 равен остат­ку от де­ле­ния на 5 мак­си­маль­но­го эле­мен­та всей по­сле­до­ва­тель­но­сти;

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

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

За­да­ние 17

Ответ:

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

Ре­ше­ние.

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

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

amax5 = max(a) % 5

amin7 = min(a) % 7

s3 = []

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

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

alen4 = [x for x in troika if len(str(x)) == 4]

a5 = [x for x in troika if x % 5 == amax5]

a7 = [x for x in troika if x % 7 == amin7]

if len(a5) <= 1 and len(a7) >= 2 and len(alen4) > 0:

s3.append(sum(troika))

print(len(s3),max(s3))

 

Ответ: 120 194137.

 

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

f=open('17.txt')

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

xmin7=min(a)%7

xmax5=max(a)%5

k=0

summ=0

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

if len(str(a[i]))==4 or len(str(a[i+1]))==4 or len(str(a[i+2]))==4:

if (a[i]%5!=xmax5 and a[i+1]%5!=xmax5 and a[i+2]%5!=xmax5) or (a[i]%5==xmax5 and a[i+1]%5!=xmax5 and a[i+2]%5!=xmax5) or (a[i]%5!=xmax5 and a[i+1]%5==xmax5 and a[i+2]%5!=xmax5) or (a[i]%5!=xmax5 and a[i+1]%5!=xmax5 and a[i+2]%5==xmax5):

if (a[i]%7==xmin7 and a[i+1]%7==xmin7 and a[i+2]%7!=xmin7) or (a[i]%7!=xmin7 and a[i+1]%7==xmin7 and a[i+2]%7==xmin7) or (a[i]%7==xmin7 and a[i+1]%7!=xmin7 and a[i+2]%7==xmin7) or (a[i]%7==xmin7 and a[i+1]%7==xmin7 and a[i+2]%7==xmin7):

k+=1

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

print(k,summ)

 

При­ведём ре­ше­ние Егора Чер­не­цо­ва на языке Python.

a = list(map(int, open('17.txt')))

mx = max(a) % 5

mn = min(a) % 7

k = best = 0

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

t = a[i:i+3]

if any(1000 <= x <= 9999 for x in t) \

and sum(x%5==mx for x in t) <= 1 \

and sum(x%7==mn for x in t) >= 2:

k += 1

best = max(best, sum(t))

print(k, best)

 

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

f = list(map(int, open('17.txt').read().split('\n')[:-1]))

res = []

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

a1 = max([i for i in f])

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

para = [f[i], f[i + 1], f[i + 2]]

c = 0

k = 0

m = 0

for j in para:

if len(str(abs(j))) == 4:

c += 1

if j % 5 == a1 % 5:

k += 1

if j % 7 == a % 7:

m += 1

if c != 0 and k <= 1 and m >= 2:

res.append(sum(para))

print(len(res), max(res))

 

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

def good(p,m,M):

t = [1000 <= x < 10000 for x in p]

t5 = [x%5 == M%5 for x in p]

t7 = [x%7 == m%7 for x in p]

return any(t) and sum(t5) <= 1 and sum(t7) >= 2

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

m = min(a)

M = max(a)

r = [sum(a[i-2:i+1]) for i in range(2,len(a)) if good(a[i-2:i+1],m,M)]

print(len(r),max(r))


Аналоги к заданию № 75254: 75281 Все

Источник: Стат­Град: Тре­ни­ро­воч­ная ра­бо­та 28.01.2025 ИН2410302