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

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

За­да­ние 17

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

—  за­пись эле­мен­тов пары за­кан­чи­ва­ет­ся одной и той же циф­рой;

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

—  сумма квад­ра­тов эле­мен­тов пары не пре­вы­ша­ет квад­рат наи­мень­ше­го из эле­мен­тов по­сле­до­ва­тель­но­сти, за­пись ко­то­рых за­кан­чи­ва­ет­ся циф­рой 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]) % 10 == 7:

mini = min(mini, s[i])

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

if abs(s[i-1]) % 10 == abs(s[i]) % 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)

 

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

 

Ответ: 102 97666192.

 

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

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

 

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

f = open('17.txt')

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

m7 = [x for x in m if abs(x)%10==7]

mm7 = min(m7)**2

kp = 0

mac =- (20000**2)

r = []

for i in range(len(m)-1):

if str(m[i])[-1] == str(m[i+1])[-1]:

k7=0

if abs(m[i])%7 == 0:

k7 += 1

if abs(m[i+1])%7 == 0:

k7 += 1

if k7 == 1 and m[i]**2+m[i+1]**2 <= mm7:

r.append(m[i]**2+m[i+1]**2)

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