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

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

За­да­ние 17

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

 

Ответ:

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

Ре­ше­ние.

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

 

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

count = m = 0

f = open('17.txt')

l = [int(i) for i in f]

min_sp = 0

for i in range(len(l)):

if abs(l[i]) % 10 == 7:

min_sp = min(min_sp, l[i])

 

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

if ((abs(l[i])%10==7 and (abs(l[i+1]))%10!=7) or ((abs(l[i]))%10!=7 and abs((l[i+1]))%10==7)) and ((l[i]**2+l[i+1]**2) < min_sp**2):

count += 1

m = max(m, (l[i] **2 + l[i+1] **2))

print(count, m)

 

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

 

Ответ: 671 и 96731834.

 

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

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