Файл содержит последовательность целых чисел, модуль которых находится в интервале
Определите количество пар, для которых выполняются следующие условия:
— последняя цифра записи одного из элементов пары совпадает с предпоследней цифрой записи другого элемента;
— ровно один элемент из пары делится без остатка
— сумма квадратов элементов пары не превышает квадрат наименьшего из элементов последовательности, две последние цифры в записи которого одинаковы.
В ответе запишите два числа: сначала количество найденных пар, затем максимальную величину суммы квадратов элементов этих пар.
Ответ:
Приведём решение на языке 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 == (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]) % 13 == 0 and abs(s[i]) % 13 != 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]) % 13 == 0 and abs(s[i-1]) % 13 != 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]) % 13 == 0 and abs(s[i]) % 13 != 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]) % 13 == 0 and abs(s[i-1]) % 13 != 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)
Результат работы данного алгоритма — 115 96944186.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Ильи Андрианова на языке Python.
M = [int(x) for x in open('17.txt')]
A = min([x for x in M if str(x)[-1] == str(x)[-2]]) ** 2
count = 0
maxi = 0
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 % 13 == 0 and y % 13 != 0) or (x % 13 != 0 and y % 13 == 0):
if (x**2 + y**2) <= A:
count += 1
maxi = max(maxi, x**2 + y**2)
print(count, maxi)
Результат работы данного алгоритма — 115 96944186.
Приведём решение Юрия Красильникова на языке Python.
def good(x,y,m):
return (str(x)[-2] == str(y)[-1] or str(x)[-1] == str(y)[-2]) and (x%13==0) != (y%13==0) and x**2+y**2 <= m**2
a = [int(s) for s in open('17.txt')]
m = min([x for x in a if str(x)[-1] == str(x)[-2]])
b = [a[i]**2+a[i+1]**2 for i in range(len(a)-1) if good(a[i],a[i+1],m)]
print(len(b),max(b))

