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

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

За­да­ние 17

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

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

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

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

 

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

 

Ответ:

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

Ре­ше­ние.

При­ведём ре­ше­ние на языке 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 == 3:

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]) % 3 == 0 and abs(s[i]) % 3 != 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]) % 3 == 0 and abs(s[i-1]) % 3 != 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)

 

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

 

Ответ: 172  99446482.

 

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

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

 

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

f = open('17.txt')

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

c = [x for x in b if abs(x) % 10 == 3]

min1 = min(c)**2

b = [abs(x) for x in b]

max1,n = 0,0

for j in range(0,len(b)-1):

if (b[j] % 10 == b[j + 1] % 10) and (((b[j] % 3 == 0) and (b[j + 1] % 3 != 0)) or ((b[j+1] % 3 == 0) and (b[j] % 3 != 0))) and (b[j + 1]**2 + b[j]**2 <= min1):

n += 1

max1 = max(max1,b[j]**2+b[j+1]**2)

print(n,'',max1)

 

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

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

m = min([x for x in a if abs(x)%10==3])

b = [a[i]**2+a[i+1]**2 for i in range(len(a)-1) if abs(a[i])%10 == abs(a[i+1])%10 and (a[i]%3==0) != (a[i+1]%3==0) and a[i]**2+a[i+1]**2 <= m**2]

print(len(b),max(b))