📋 Условие
Задание 17 посвящено работе с некоторой последовательностью чисел, записанной в текстовом файле. Нужно найти количество пар или троек соседних элементов, которые подходят под определённое условие.
🔍 Подробное решение
Задание 17 посвящено работе с некоторой последовательностью чисел, записанной в текстовом файле. Требуется посчитать пары или тройки соседних элементов, которые подходят под определённое условие.
Шаблонный код на Python:
```python
# Чтение файла
a = [int(x) for x in open('17-3.txt')]
# Перебор пар
for x, y in zip(a, a[1:]):
if условие(x, y):
...
# Перебор троек
for x, y, z in zip(a, a[1:], a[2:]):
if условие(x, y, z):
...
```
Типовые задачи:
1. Количество пар с произведением > 0 и суммой, кратной 7. Ответ: 359, 115022
2. Количество троек с произведением, кратным 7, и суммой, оканчивающейся на 5. Ответ: 153, 19285
3. Пары, где хотя бы один элемент заканчивается на 7, а сумма делится на 12. Ответ: 71, 17664
4. Пары, где хотя бы один элемент больше среднего арифметического, а сумма делится на 7. Ответ: 202, 6916
5. Пары, где сумма < минимального положительного элемента, кратного 19. Ответ: 4984, 696
Шаблонный код на Python:
```python
# Чтение файла
a = [int(x) for x in open('17-3.txt')]
# Перебор пар
for x, y in zip(a, a[1:]):
if условие(x, y):
...
# Перебор троек
for x, y, z in zip(a, a[1:], a[2:]):
if условие(x, y, z):
...
```
Типовые задачи:
1. Количество пар с произведением > 0 и суммой, кратной 7. Ответ: 359, 115022
2. Количество троек с произведением, кратным 7, и суммой, оканчивающейся на 5. Ответ: 153, 19285
3. Пары, где хотя бы один элемент заканчивается на 7, а сумма делится на 12. Ответ: 71, 17664
4. Пары, где хотя бы один элемент больше среднего арифметического, а сумма делится на 7. Ответ: 202, 6916
5. Пары, где сумма < минимального положительного элемента, кратного 19. Ответ: 4984, 696
📚 Теория
Обработка последовательностей. Поиск пар, троек с условиями.
🐍 Шаблон Python
Python
f = open('17.txt')
a = [int(x) for x in f]
# пары (a[i], a[i+1])
for i in range(len(a) - 1):
pass
# тройки (a[i], a[i+1], a[i+2])
for i in range(len(a) - 2):
pass
# число из 5 цифр:
if len(str(abs(a[i]))) == 5
# кратное с отрицательными:
if abs(a[i]) % 18 == 0
# тройки срезом:
tr = a[i:i+3] 🐍 Альтернативный способ
Способ 2
# Пример задачи 20963:
f = open('17_20963.txt')
a = [int(x) for x in f]
mn = m = 10**10
k = 0
for i in range(len(a)):
if len(str(abs(a[i]))) == 4 and abs(a[i]) % 17 == 0:
mn = min(mn, a[i])
for i in range(len(a) - 2):
x1 = len(str(abs(a[i]))) == 4 and abs(a[i]) % 100 == 27
x2 = len(str(abs(a[i+1]))) == 4 and abs(a[i+1]) % 100 == 27
x3 = len(str(abs(a[i+2]))) == 4 and abs(a[i+2]) % 100 == 27
if (x1+x2+x3) > 0 and a[i]**2+a[i+1]**2+a[i+2]**2 <= mn**2:
k += 1
m = min(abs(a[i])+abs(a[i+1])+abs(a[i+2]), m)
print(k, m)