В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых только один из элементов является двузначным числом, а сумма элементов пары кратна минимальному двузначному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Ответ:
Приведём решение на языке Python.
f = [int(x) for x in open('DEMO_17.txt')]
dva = [x for x in f if len(str(x)) == 2]
otv = []
for i in range(len(f)-1):
x, y = f[i], f[i+1]
if (len(str(x)) == 2 and len(str(y)) != 2) or (len(str(x)) != 2 and len(str(y)) == 2):
if (x + y) % min(dva) == 0:
otv.append(x + y)
print(len(otv), max(otv))
Результат работы программы —
Ответ: 150 9930.
Приведём решение Александра Козлова на языке Python.
f = [int(x) for x in open('DEMO_17.txt')]
dva = [x for x in f if len(str(x)) == 2]
otv = []
for x, y in zip(f, f[1:]):
if (10 <= x <= 99) + (10 <= y <= 99) == 1:
if (x + y) % min(dva) == 0:
otv.append(x + y)
print(len(otv), max(otv))
Приведём решение Юрия Красильникова на языке Python.
def good(p,m):
t = [10 <= x < 100 for x in p]
return sum(t) == 1 and sum(p)%m == 0
a = [int(s) for s in open('DEMO_17.txt')]
m = min([x for x in a if 10 <= x < 100])
r = [sum(a[i-1:i+1]) for i in range(1,len(a)) if good(a[i-1:i+1],m)]
print(len(r),max(r))

