Файл содержит последовательность целых чисел, модуль которых находится в интервале
Определите количество пар, для которых выполняются следующие условия:
— последняя цифра записи одного из элементов пары совпадает с предпоследней цифрой записи другого элемента;
— ровно один элемент из пары делится без остатка
— сумма квадратов элементов пары не превышает квадрат наименьшего из элементов последовательности, две последние цифры в записи которого одинаковы.
В ответе запишите два числа: сначала количество найденных пар, затем максимальную величину суммы квадратов элементов этих пар.
Ответ:
Приведём решение на языке 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.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Ильи Андрианова на языке 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)

