17. Числовые последовательности: все задания
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $–100\ 000$ до $100\ 000$ включительно. Определите количество троек последовательности, в которых все числа одного знака, при этом произведение минимального и максимального элементов тройки больше квадрата минимального элемента последовательности, который оканчивается на $15$ и является трёхзначным числом.
В ответе запишите количество найденных троек чисел, затем минимальное из произведений максимального и минимального элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Сначала необходимо найти минимальный элемент всей последовательности, который одновременно удовлетворяет двум условиям: он является трёхзначным числом, то есть его модуль находится в пределах от $100$ до $999$; он оканчивается на $15$.
Так как в последовательности могут встречаться отрицательные числа, последние две цифры удобно проверять по модулю числа.
Минимальный подходящий элемент последовательности равен $m=-915$. Тогда квадрат этого элемента: $m^2=(-915)^2=837225$.
Теперь будем рассматривать все тройки подряд идущих элементов последовательности.
Для каждой тройки нужно проверить два условия.
- Во-первых, все три числа должны быть одного знака: либо все положительные, либо все отрицательные.
- Во-вторых, найдём в тройке минимальный и максимальный элементы и вычислим их произведение. Оно должно быть больше $837225$.
Если оба условия выполняются, увеличиваем счётчик подходящих троек и запоминаем полученное произведение.
После проверки всей последовательности получаем: количество подходящих троек — $3507$; минимальное произведение максимального и минимального элементов среди них — $863808$.
Например, такое минимальное произведение получается для тройки $-192$, $-296$, $-4499$:
$\min=-4499$,
$\max=-192$,
$(-4499)\cdot(-192)=863808$.
При этом $863808>837225$, поэтому тройка подходит.
Код на Python
a = [int(x) for x in open('17-01.txt')]
m = min(x for x in a
if 100 <= abs(x) <= 999
and abs(x) % 100 == 15)
count = 0
min_product = 10**20
for i in range(len(a) - 2):
x, y, z = a[i], a[i + 1], a[i + 2]
if (x > 0 and y > 0 and z > 0) or \
(x < 0 and y < 0 and z < 0):
product = min(x, y, z) * max(x, y, z)
if product > m ** 2:
count += 1
min_product = min(min_product, product)
print(count, min_product)
Программа выводит:
3507 863808
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100\ 000$ включительно. Определите количество пар последовательности, в которых сумма остатков от деления обоих элементов на $15$ равна минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. В данном файле он равен $8$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары найдём остатки от деления обоих чисел на $15$ и сложим их. Пара подходит, если $a_i\bmod15+a_{i+1}\bmod15=8$.
Для каждой подходящей пары увеличиваем счётчик и запоминаем сумму её элементов.
После перебора всей последовательности получаем $365$ подходящих пар.
Минимальная сумма элементов такой пары равна $5888$. Она получается, например, для соседних чисел $3038$ и $2850$:
$3038\bmod15=8$,
$2850\bmod15=0$,
$8+0=8$.
Сумма элементов пары: $3038+2850=5888$.
Код на Python
a = [int(x) for x in open('17-02.txt')]
m = min(a)
sums = []
for i in range(len(a) - 1):
if a[i] % 15 + a[i + 1] % 15 == m:
sums.append(a[i] + a[i + 1])
print(len(sums), min(sums))
Программа выводит:
365 5888
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество пар последовательности, в которых элементы не равны, а абсолютное значение их разности делится на минимальный положительный элемент последовательности, кратный $33$. Гарантируется, что такой элемент в последовательности есть.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается $2$ идущих подряд элемента последовательности.
Сначала найдём минимальный положительный элемент последовательности, который кратен $33$. Для этого среди всех положительных чисел проверим условие делимости на $33$.
Минимальный подходящий элемент равен $297$.
Теперь рассмотрим все пары соседних элементов последовательности.
Для каждой пары чисел $a$ и $b$ должны одновременно выполняться два условия.
- Первое: элементы пары не равны: $a\ne b$.
- Второе: абсолютное значение их разности должно делиться на $297$ без остатка: $|a-b|\bmod297=0$.
Если оба условия выполняются, увеличиваем количество найденных пар и запоминаем сумму элементов пары: $a+b$.
После перебора всей последовательности получаем $33$ подходящие пары.
Максимальная сумма равна $164160$. Она получается для соседних элементов $90396$ и $73764$.
Проверим условие: $|90396-73764|=16632$, $16632:297=56$, следовательно, разность делится на $297$ без остатка.
Сумма элементов пары: $90396+73764=164160$.
Код на Python
a = [int(x) for x in open('17-03.txt')]
m = min(x for x in a if x > 0 and x % 33 == 0)
count = 0
max_sum = -10**20
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x != y and abs(x - y) % m == 0:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
33 164160
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых сумма остатков от деления обоих элементов на $21$ равна минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. Минимальный элемент равен $8$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $a$ и $b$ найдём остатки от деления каждого элемента на $21$: $a\bmod21$ и $b\bmod21$.
Пара подходит, если сумма этих остатков равна минимальному элементу последовательности, то есть $a\bmod21+b\bmod21=8$.
Для каждой подходящей пары увеличиваем счётчик и вычисляем сумму её элементов: $a+b$. После перебора всей последовательности получаем $213$ подходящих пар.
Максимальная сумма элементов такой пары равна $171263$. Она получается для соседних чисел $87886$ и $83377$.
Проверим условие:
$87886\bmod21=1$,
$83377\bmod21=7$,
$1+7=8$.
Сумма элементов: $87886+83377=171263$.
Код на Python
a = [int(x) for x in open('17-04.txt')]
m = min(a)
count = 0
max_sum = 0
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x % 21 + y % 21 == m:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
213 171263
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество пар последовательности, в которых сумма элементов меньше минимального положительного элемента последовательности, кратного $21$. Гарантируется, что такой элемент в последовательности есть.
В ответе запишите количество найденных пар, затем абсолютное значение максимальной из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный положительный элемент последовательности, который делится на $21$ без остатка. Минимальный подходящий элемент равен $735$. Проверим: $735:21=35$.
Теперь будем рассматривать все пары соседних элементов последовательности. Для каждой пары чисел $a$ и $b$ вычислим их сумму: $a+b$.
Пара подходит, если эта сумма меньше найденного значения $735$: $a+b<735$.
Для каждой подходящей пары увеличиваем счётчик и запоминаем её сумму. После перебора всей последовательности получаем $4990$ подходящих пар.
Затем среди сумм всех подходящих пар находим максимальную. Она равна $723$.
Например, такая сумма получается для соседних элементов $96316$ и $-95593$: $96316+(-95593)=723$.
Условие выполняется: $723<735$.
По условию в ответе требуется записать абсолютное значение максимальной суммы: $|723|=723$.
Код на Python
a = [int(x) for x in open('17-05.txt')]
m = min(x for x in a if x > 0 and x % 21 == 0)
count = 0
max_sum = -10**20
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x + y < m:
count += 1
max_sum = max(max_sum, x + y)
print(count, abs(max_sum))
Программа выводит:
4990 723
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество троек элементов последовательности, в каждой из которых есть не менее одного пятизначного числа, а сумма элементов тройки не меньше максимального элемента последовательности, оканчивающегося на $27$.
В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
В первой строке файла записано количество элементов последовательности — $6684$, поэтому сами элементы начинаются со второй строки.
Сначала найдём максимальный элемент последовательности, оканчивающийся на $27$. Чтобы проверить, что число оканчивается на $27$, используем условие $|x|\bmod100=27$.
Максимальный подходящий элемент равен $73627$. Теперь будем рассматривать все тройки подряд идущих элементов последовательности.
Для каждой тройки нужно проверить два условия.
- Первое: в тройке должно быть хотя бы одно пятизначное число. Для числа $x$ это означает: $10000\leq|x|\leq99999$.
- Второе: сумма трёх элементов должна быть не меньше найденного значения $73627$: $a+b+c\geq73627$.
Если оба условия выполняются, увеличиваем счётчик подходящих троек и запоминаем сумму элементов этой тройки.
После перебора всей последовательности получаем $453$ подходящие тройки.
Максимальная сумма среди них равна $285731$. Она получается для тройки $95870,\ 90500,\ 99361$.
Проверим сумму: $95870+90500+99361=285731$.
При этом $285731\geq73627$, и все три числа являются пятизначными, поэтому тройка подходит.
Код на Python
f = open('17-06.txt')
n = int(f.readline())
a = [int(x) for x in f]
m = max(x for x in a if abs(x) % 100 == 27)
count = 0
max_sum = -10**20
for i in range(len(a) - 2):
x = a[i]
y = a[i + 1]
z = a[i + 2]
if (10000 <= abs(x) <= 99999 or
10000 <= abs(y) <= 99999 or
10000 <= abs(z) <= 99999):
s = x + y + z
if s >= m:
count += 1
max_sum = max(max_sum, s)
print(count, max_sum)
Программа выводит:
453 285731
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых остаток от деления на $33$ хотя бы одного из элементов равен минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. Минимальный элемент равен $8$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $a$ и $b$ найдём остатки от деления каждого элемента на $33$.
По условию пара подходит, если хотя бы один из остатков равен минимальному элементу последовательности, то есть $8$: $a\bmod33=8$ или $b\bmod33=8$.
Если условие выполняется, увеличиваем количество найденных пар и вычисляем сумму элементов пары: $a+b$.
После перебора всей последовательности получаем $622$ подходящие пары.
Максимальная сумма элементов такой пары равна $174933$. Она получается для соседних чисел $89620$ и $85313$.
Проверим условие:
$89620\bmod33=25$,
$85313\bmod33=8$.
Хотя бы один из остатков равен $8$, поэтому пара подходит.
Сумма элементов: $89620+85313=174933$.
Код на Python
a = [int(x) for x in open('17-07.txt')]
m = min(a)
count = 0
max_sum = 0
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x % 33 == m or y % 33 == m:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
622 174933
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых остаток от деления на $55$ хотя бы одного из элементов равен минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. Минимальный элемент равен $8$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $a$ и $b$ найдём остатки от деления каждого элемента на $55$.
По условию пара подходит, если хотя бы один из остатков равен минимальному элементу последовательности, то есть $8$: $a\bmod55=8$ или $b\bmod55=8$.
Если условие выполняется, увеличиваем количество найденных пар и вычисляем сумму элементов пары: $a+b$.
После перебора всей последовательности получаем $359$ подходящих пар.
Минимальная сумма элементов такой пары равна $3716$. Она получается для соседних чисел $943$ и $2773$.
Проверим условие:
$943\bmod55=8$,
$2773\bmod55=23$.
Хотя бы один из остатков равен $8$, поэтому пара подходит.
Сумма элементов: $943+2773=3716$.
Код на Python
a = [int(x) for x in open('17-08.txt')]
m = min(a)
count = 0
min_sum = 10**20
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x % 55 == m or y % 55 == m:
count += 1
min_sum = min(min_sum, x + y)
print(count, min_sum)
Программа выводит:
359 3716
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество пар последовательности, в которых сумма элементов меньше минимального положительного элемента последовательности, кратного $123$. Гарантируется, что такой элемент в последовательности есть.
В ответе запишите количество найденных пар, затем абсолютное значение максимальной из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный положительный элемент последовательности, который делится на $123$ без остатка. Минимальный такой элемент равен $984$.
Проверим: $984:123=8$.
Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $a$ и $b$ вычислим их сумму: $a+b$. По условию пара подходит, если эта сумма меньше найденного числа $984$: $a+b<984$.
Для каждой подходящей пары увеличиваем счётчик и запоминаем её сумму.
После перебора всей последовательности получаем $5001$ подходящую пару.
Максимальная сумма среди подходящих пар равна $962$. Она получается для соседних элементов $53813$ и $-52851$. Проверим:
$53813+(-52851)=962$,
$962<984$.
По условию требуется записать абсолютное значение максимальной суммы: $|962|=962$.
Код на Python
a = [int(x) for x in open('17-09.txt')]
m = min(x for x in a if x > 0 and x % 123 == 0)
count = 0
max_sum = -10**20
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x + y < m:
count += 1
max_sum = max(max_sum, x + y)
print(count, abs(max_sum))
Программа выводит:
5001 962
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых только один из элементов является двузначным числом, а сумма элементов пары кратна минимальному двузначному элементу последовательности.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
В первой строке файла записано количество элементов последовательности — $4404$, поэтому сами элементы начинаются со второй строки.
Сначала найдём минимальный двузначный элемент последовательности. Двузначные числа находятся в диапазоне от $10$ до $99$. Минимальный двузначный элемент равен $10$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $x$ и $y$ необходимо проверить два условия.
- Первое: только один элемент пары должен быть двузначным. То есть либо $x$ двузначное, а $y$ — нет, либо наоборот. Это можно проверить с помощью условия: $10\leq x\leq99$ или $10\leq y\leq99$, причём должно выполняться только одно из этих условий.
- Второе: сумма элементов пары должна быть кратна минимальному двузначному элементу, то есть $10$: $(x+y)\bmod10=0$.
Если оба условия выполнены, увеличиваем количество найденных пар и запоминаем сумму элементов пары.
После перебора всей последовательности получаем $150$ подходящих пар.
Максимальная сумма элементов такой пары равна $9930$. Она получается для соседних чисел $66$ и $9864$.
Проверим: $66$ — двузначное число, а $9864$ — не двузначное.
Сумма элементов: $66+9864=9930$.
Проверим кратность: $9930\bmod10=0$. Следовательно, эта пара подходит.
Код на Python
f = open('17-10.txt')
n = int(f.readline())
a = [int(x) for x in f]
m = min(x for x in a if 10 <= x <= 99)
count = 0
max_sum = 0
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if ((10 <= x <= 99) + (10 <= y <= 99) == 1):
if (x + y) % m == 0:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
150 9930
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых сумма остатков от деления обоих элементов на $18$ равна минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. Минимальный элемент равен $8$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $x$ и $y$ найдём остатки от деления обоих элементов на $18$: $x\bmod18$ и $y\bmod18$.
По условию пара подходит, если сумма этих остатков равна минимальному элементу последовательности, то есть: $x\bmod18+y\bmod18=8$.
Если условие выполняется, увеличиваем количество найденных пар и вычисляем сумму элементов пары: $x+y$.
После перебора всей последовательности получаем $285$ подходящих пар.
Максимальная сумма элементов такой пары равна $166436$. Она получается для соседних чисел $86120$ и $80316$.
Проверим условие:
$86120\bmod18=8$,
$80316\bmod18=0$,
$8+0=8$.
Сумма элементов пары: $86120+80316=166436$.
Код на Python
a = [int(x) for x in open('17-11.txt')]
m = min(a)
count = 0
max_sum = 0
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x % 18 + y % 18 == m:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
285 166436
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых сумма остатков от деления обоих элементов на $20$ равна минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. Минимальный элемент равен $8$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $x$ и $y$ найдём остатки от деления обоих элементов на $20$: $x\bmod20$ и $y\bmod20$.
По условию пара подходит, если сумма этих остатков равна минимальному элементу последовательности, то есть: $x\bmod20+y\bmod20=8$.
Если условие выполняется, увеличиваем количество найденных пар и вычисляем сумму элементов пары: $x+y$.
После перебора всей последовательности получаем $200$ подходящих пар.
Максимальная сумма элементов такой пары равна $173308$. Она получается для соседних чисел $89827$ и $83481$.
Проверим условие:
$89827\bmod20=7$,
$83481\bmod20=1$,
$7+1=8$.
Сумма элементов пары: $89827+83481=173308$.
Код на Python
a = [int(x) for x in open('17-12.txt')]
m = min(a)
count = 0
max_sum = 0
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x % 20 + y % 20 == m:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
200 173308
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество пар последовательности, в которых хотя бы одно число отрицательно, а сумма чисел пары меньше количества чисел в последовательности, кратных $32$.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала посчитаем, сколько чисел во всей последовательности кратны $32$. Таких чисел оказалось $310$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $x$ и $y$ необходимо проверить два условия.
- Первое: хотя бы один элемент пары должен быть отрицательным: $x<0$ или $y<0$.
- Второе: сумма элементов пары должна быть меньше количества чисел, кратных $32$, то есть: $x+y<310$.
Если оба условия выполняются, увеличиваем количество подходящих пар и запоминаем сумму элементов пары.
После перебора всей последовательности получаем $4969$ подходящих пар.
Максимальная сумма среди таких пар равна $299$. Она получается для соседних чисел $-47129$ и $47428$.
Проверим: $-47129<0$, поэтому в паре есть отрицательное число.
Сумма элементов: $-47129+47428=299$.
Проверим второе условие: $299<310$. Следовательно, эта пара подходит.
Код на Python
a = [int(x) for x in open('17-13.txt')]
k = sum(1 for x in a if x % 32 == 0)
count = 0
max_sum = -10**20
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if (x < 0 or y < 0) and x + y < k:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
4969 299
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество троек элементов последовательности, в которых не более двух из трёх элементов являются четырёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на $25$.
В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
В первой строке файла записано количество элементов последовательности — $6678$, поэтому сами элементы начинаются со второй строки. Сначала найдём максимальный элемент последовательности, оканчивающийся на $25$.
Для проверки окончания числа на $25$ используем условие: $|x|\bmod100=25$.
Максимальный такой элемент равен $84725$. Теперь будем рассматривать все тройки подряд идущих элементов.
Число является четырёхзначным, если его абсолютное значение находится в диапазоне $1000\leq|x|\leq9999$.
По условию в тройке должно быть не более двух четырёхзначных чисел. Значит, количество четырёхзначных элементов в каждой тройке должно быть меньше или равно $2$.
Кроме того, сумма элементов тройки должна быть не больше $84725$: $x+y+z\leq84725$.
Если оба условия выполняются, увеличиваем количество найденных троек и запоминаем их сумму.
После перебора всей последовательности получаем $6314$ подходящих троек.
Максимальная сумма среди них равна $84523$. Она получается для тройки $-682,\ 85871,\ -666$.
В этой тройке нет четырёхзначных чисел, поэтому первое условие выполняется.
Проверим сумму: $-682+85871-666=84523$.
Также $84523\leq84725$, следовательно, эта тройка подходит.
Код на Python
f = open('17-14.txt')
n = int(f.readline())
a = [int(x) for x in f]
m = max(x for x in a if abs(x) % 100 == 25)
count = 0
max_sum = -10**20
for i in range(len(a) - 2):
x = a[i]
y = a[i + 1]
z = a[i + 2]
k = sum(1000 <= abs(t) <= 9999 for t in (x, y, z))
s = x + y + z
if k <= 2 and s <= m:
count += 1
max_sum = max(max_sum, s)
print(count, max_sum)
Программа выводит:
6314 84523
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых сумма остатков от деления обоих элементов на $12$ равна минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. Минимальный элемент равен $8$. Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $x$ и $y$ найдём остатки от деления на $12$: $x\bmod12$ и $y\bmod12$.
По условию сумма этих остатков должна быть равна минимальному элементу последовательности: $x\bmod12+y\bmod12=8$.
Если это условие выполняется, увеличиваем количество подходящих пар и вычисляем сумму их элементов: $x+y$.
После перебора всей последовательности получаем $639$ подходящих пар.
Теперь среди всех подходящих пар найдём минимальную сумму. Она равна $3716$ и получается для соседних чисел $943$ и $2773$.
Проверим остатки:
$943\bmod12=7$,
$2773\bmod12=1$.
Их сумма: $7+1=8$. Значит, пара подходит.
Сумма элементов пары: $943+2773=3716$.
Код на Python
a = [int(x) for x in open('17-15-1.txt')]
m = min(a)
count = 0
min_sum = 10**20
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x % 12 + y % 12 == m:
count += 1
min_sum = min(min_sum, x + y)
print(count, min_sum)
Программа выводит:
639 3716
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество троек элементов последовательности, в которых ровно два двузначных числа, а квадрат суммы элементов тройки меньше максимального элемента последовательности, оканчивающегося на $33$.
В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
В первой строке файла записано количество элементов последовательности — $6702$, поэтому сами элементы начинаются со второй строки.
Сначала найдём максимальный элемент последовательности, оканчивающийся на $33$. Максимальный такой элемент равен $99033$. Теперь будем рассматривать все тройки подряд идущих элементов.
Число считаем двузначным, если его модуль находится в диапазоне $10\leq|x|\leq99$.
В каждой тройке должно быть ровно два таких числа.
Далее вычисляем сумму элементов тройки: $s=x+y+z$.
По условию квадрат этой суммы должен быть меньше $99033$: $s^2<99033$.
Так как $314^2=98596<99033$, а $315^2=99225>99033$, подходящая сумма может находиться в диапазоне от $-314$ до $314$.
После перебора всех троек получаем $68$ подходящих троек.
Максимальная сумма среди них равна $306$. Она получается для тройки $325,\ 80,\ -99$.
В этой тройке ровно два двузначных числа: $80$ и $-99$.
Сумма элементов: $325+80-99=306$.
Проверим второе условие:
$306^2=93636$,
$93636<99033$.
Следовательно, тройка подходит.
Код на Python
f = open('17-16.txt')
n = int(f.readline())
a = [int(x) for x in f]
m = max(x for x in a if abs(x) % 100 == 33)
count = 0
max_sum = -10**20
for i in range(len(a) - 2):
x = a[i]
y = a[i + 1]
z = a[i + 2]
k = sum(10 <= abs(t) <= 99 for t in (x, y, z))
s = x + y + z
if k == 2 and s ** 2 < m:
count += 1
max_sum = max(max_sum, s)
print(count, max_sum)
Программа выводит:
68 306
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество троек элементов последовательности, в которых только одно из чисел является двузначным, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на $13$.
В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
В первой строке файла записано количество элементов последовательности — $6639$, поэтому сами элементы начинаются со второй строки.
Сначала найдём максимальный элемент последовательности, оканчивающийся на $13$. Для этого выбираем числа, для которых $x\bmod100=13$. Максимальный такой элемент равен $98613$. Теперь будем рассматривать все тройки подряд идущих элементов.
В каждой тройке должно быть ровно одно двузначное число. Для натурального числа $x$ оно является двузначным, если $10\leq x\leq99$.
Для каждой подходящей по этому условию тройки вычисляем сумму: $s=x+y+z$.
По условию она должна быть не больше $98613$: $s\leq98613$.
После перебора всей последовательности получаем $2688$ подходящих троек.
Максимальная сумма среди них равна $98608$. Она получается для тройки $89605,\ 8909,\ 94$.
В этой тройке только число $94$ является двузначным.
Проверим сумму: $89605+8909+94=98608$.
Условие выполняется: $98608\leq98613$.
Код на Python
f = open('17-17.txt')
n = int(f.readline())
a = [int(x) for x in f]
m = max(x for x in a if x % 100 == 13)
count = 0
max_sum = 0
for i in range(len(a) - 2):
x = a[i]
y = a[i + 1]
z = a[i + 2]
k = sum(10 <= t <= 99 for t in (x, y, z))
s = x + y + z
if k == 1 and s <= m:
count += 1
max_sum = max(max_sum, s)
print(count, max_sum)
Программа выводит:
2688 98608
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество троек элементов последовательности, в которых только одно из чисел является трёхзначным, а сумма элементов тройки меньше максимального элемента последовательности, оканчивающегося на $17$.
В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
В первой строке файла записано количество элементов последовательности — $6654$, поэтому сами элементы начинаются со второй строки.
Сначала найдём максимальный элемент последовательности, оканчивающийся на $17$. Для проверки окончания числа на $17$ используем условие $|x|\bmod100=17$. Максимальный такой элемент равен $85917$.
Теперь будем рассматривать все тройки подряд идущих элементов.
Число является трёхзначным, если его абсолютное значение находится в диапазоне $100\leq|x|\leq999$.
По условию в каждой тройке должно быть ровно одно трёхзначное число.
Для каждой такой тройки вычисляем сумму: $s=x+y+z$.
Она должна быть меньше $85917$: $s<85917$.
После перебора всей последовательности получаем $2781$ подходящую тройку.
Максимальная сумма среди них равна $85899$. Она получается для тройки $-81,\ 613,\ 85367$.
В этой тройке только число $613$ является трёхзначным.
Проверим сумму: $-81+613+85367=85899$.
Также $85899<85917$, следовательно, эта тройка подходит.
Код на Python
f = open('17-18.txt')
n = int(f.readline())
a = [int(x) for x in f]
m = max(x for x in a if abs(x) % 100 == 17)
count = 0
max_sum = -10**20
for i in range(len(a) - 2):
x = a[i]
y = a[i + 1]
z = a[i + 2]
k = sum(100 <= abs(t) <= 999 for t in (x, y, z))
s = x + y + z
if k == 1 and s < m:
count += 1
max_sum = max(max_sum, s)
print(count, max_sum)
Программа выводит:
2781 85899
В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от $1$ до $100,000$ включительно. Определите количество пар последовательности, в которых остаток от деления хотя бы одного из элементов на $16$ равен минимальному элементу последовательности.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный элемент всей последовательности. Минимальный элемент равен $8$. Теперь будем рассматривать все пары соседних элементов $x$ и $y$.
По условию пара подходит, если остаток от деления хотя бы одного элемента на $16$ равен $8$:$x\bmod16=8$ или $y\bmod16=8$.
Для каждой подходящей пары увеличиваем счётчик и вычисляем сумму: $x+y$.
После перебора всей последовательности получаем $1214$ подходящих пар.
Максимальная сумма равна $176024$. Она получается для соседних чисел $87456$ и $88568$.
Проверим остатки:
$87456\bmod16=0$,
$88568\bmod16=8$.
Хотя бы один остаток равен минимальному элементу последовательности.
Сумма пары: $87456+88568=176024$.
Код на Python
a = [int(x) for x in open('17-19.txt')]
m = min(a)
count = 0
max_sum = 0
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x % 16 == m or y % 16 == m:
count += 1
max_sum = max(max_sum, x + y)
print(count, max_sum)
Программа выводит:
1214 176024
В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от $-100,000$ до $100,000$ включительно. Определите количество пар последовательности, в которых сумма элементов меньше минимального положительного элемента последовательности, кратного $110$. Гарантируется, что такой элемент в последовательности есть.
В ответе запишите количество найденных пар, затем абсолютное значение максимальной из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Сначала найдём минимальный положительный элемент последовательности, который кратен $110$. Минимальный такой элемент равен $440$. Действительно, $440\bmod110=0$.
Теперь будем рассматривать все пары соседних элементов последовательности.
Для каждой пары чисел $x$ и $y$ вычисляем сумму: $s=x+y$.
Пара подходит, если эта сумма меньше найденного значения $440$: $x+y<440$.
Для каждой подходящей пары увеличиваем счётчик и запоминаем максимальную сумму.
После перебора всей последовательности получаем $4974$ подходящие пары.
Максимальная сумма среди них равна $425$. Она получается для соседних чисел $-2038$ и $2463$.
Проверим:
$-2038+2463=425$,
$425<440$.
По условию в ответ необходимо записать абсолютное значение максимальной суммы: $|425|=425$.
Код на Python
a = [int(x) for x in open('17-20.txt')]
m = min(x for x in a if x > 0 and x % 110 == 0)
count = 0
max_sum = -10**20
for i in range(len(a) - 1):
x = a[i]
y = a[i + 1]
if x + y < m:
count += 1
max_sum = max(max_sum, x + y)
print(count, abs(max_sum))
Программа выводит:
4974 425