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

