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

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

За­да­ние 17

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

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

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

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

 

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

 

Ответ:

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

Ре­ше­ние.

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

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

a832 = max([x for x in a if x % 1000 == 832])

count = 0

s3 = []

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

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

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

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

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

if sum(troika) > a832:

if len(a3) < len (a5):

if 0 < len(raz4) < 3:

s3.append(sum(troika))

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

 

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

 

Ответ: 59  198654.

 

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

f = open('17.txt')

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

m = 0

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

if a[i]%1000 == 832:

m = max(m,a[i])

cnt = 0

maxi = 0

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

k5=0

k3=0

for j in range (i,i+3):

if a[j] % 5 == 0:

k5 += 1

if a[j] % 3 == 0:

k3+=1

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

if (len(str(a[i]))==4 or len(str(a[i+1]))==4 or len(str(a[i+2]))==4) and (k5 > k3) and ((a[i]+a[i+1]+a[i+2]) > m):

cnt += 1

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

print(cnt,maxi)

 


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