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

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

За­да­ние 17

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

—  по­след­няя цифра за­пи­си од­но­го из эле­мен­тов пары сов­па­да­ет с пред­по­след­ней циф­рой за­пи­си дру­го­го эле­мен­та;

—  ровно один эле­мент из пары де­лит­ся без остат­ка на 7;

—  сумма квад­ра­тов эле­мен­тов пары не пре­вы­ша­ет квад­рат наи­мень­ше­го из эле­мен­тов по­сле­до­ва­тель­но­сти, две по­след­ние цифры в за­пи­си ко­то­ро­го оди­на­ко­вы.

 

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

 

Ответ:

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

Ре­ше­ние.

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

f = open('17.txt')

s = f.readlines()

for i in range(len(s)):

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

count = 0

maxi = 0

mini = 0

for i in range(len(s)):

if abs(s[i-1]) % 10 == (abs(s[i]) // 10) % 10:

mini = min(mini, s[i])

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

if abs(s[i-1]) % 10 == (abs(s[i]) // 10) % 10:

if abs(s[i-1]) % 7 == 0 and abs(s[i]) % 7 != 0 and s[i-1]**2 + s[i]**2 <= mini**2:

count+=1

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

elif abs(s[i]) % 7 == 0 and abs(s[i-1]) % 7 != 0 and s[i-1]**2 + s[i]**2 <= mini**2:

count+=1

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

elif abs(s[i]) % 10 == (abs(s[i-1]) // 10) % 10:

if abs(s[i-1]) % 7 == 0 and abs(s[i]) % 7 != 0 and s[i-1]**2 + s[i]**2 <= mini**2:

count+=1

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

elif abs(s[i]) % 7 == 0 and abs(s[i-1]) % 7 != 0 and s[i-1]**2 + s[i]**2 <= mini**2:

count+=1

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

print(count, maxi)

 

Ре­зуль­тат ра­бо­ты дан­но­го ал­го­рит­ма  — 205 99520570.

 

Ответ: 205  99520570.

 

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

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

 

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

M = [int(x) for x in open('17.txt')]

MINI = min([x for x in M if str(x)[-2] == str(x)[-1]])

count, maxi = 0, -999999

for i in range(0, len(M)-1):

x, y = M[i], M[i+1]

if (str(x)[-1] == str(y)[-2]) or (str(x)[-2] == str(y)[-1]):

if (x % 7 == 0 and y % 7 != 0) or (x % 7 != 0 and y % 7 == 0):

if (x ** 2 + y ** 2) <= MINI ** 2:

count += 1

maxi = max(maxi, x ** 2 + y ** 2)

print(count, maxi)