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

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

За­да­ние 17

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

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

—  в четвёрке боль­ше чисел, крат­ных 3, чем чисел, крат­ных 7;

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

 

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

 

Ответ:

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

Ре­ше­ние.

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

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

a538 = max([x for x in a if x % 1000 == 538])

s4 = []

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

cetverka = [a[i] , a[i+1] , a[i+2], a[i+3]]

a5 = [x for x in cetverka if len(str(x)) >= 5]

anot5 = [x for x in cetverka if len(str(x)) != 5]

a3 = [x for x in cetverka if x % 3 == 0]

a7 = [x for x in cetverka if x % 7 == 0]

if len(a5) >= 2 and len(anot5) >= 1:

if len(a3) > len(a7):

if sum(cetverka) > a538 and sum(cetverka) < a538*2:

s4.append(sum(cetverka))

print(len(s4),max(s4))

 

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

 

Ответ: 260  106865.

 

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

def good(p,m):

t = [10000 <= abs(x) < 100000 for x in p]

k3 = [x%3 == 0 for x in p]

k7 = [x%7 == 0 for x in p]

return 2 <= sum(t) <= 3 and sum(k3) > sum(k7) and m < sum(p) < 2*m

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

m = max([x for x in a if str(x)[-3:] == '538'])

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

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


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