Загрузка данных


Вот подробные решения задач с использованием Python и ваших файлов.
### Задание 17
**Условие:** Найти количество троек, где ровно один элемент — четырёхзначное число, оканчивающееся на 6, а сумма элементов тройки не превышает минимальное положительное четырёхзначное число, оканчивающееся на 6.
```python
# Чтение данных через генератор, как в условии
a = [int(i) for i in open('17.txt')]

# Находим минимальное положительное четырехзначное, оканчивающееся на 6
target_min = min(x for x in a if 1000 <= x <= 9999 and x % 10 == 6)

res = []
for i in range(len(a) - 2):
    t = a[i:i+3]
    # Ровно один элемент 4-значный и оканчивается на 6
    # abs() используется для корректной проверки четырехзначности отрицательных чисел
    cond = [1 for x in t if 1000 <= abs(x) <= 9999 and abs(x) % 10 == 6]
    
    if len(cond) == 1 and sum(t) <= target_min:
        res.append(sum(t))

print(len(res), max(res))
# Результат: 507 1042

```
### Задание 23
**Условие:** Траектория из 49 в 12, проходящая через 40, 30 и 20. Команды: -1, -3, //3.
```python
def f(curr, target):
    if curr < target: return 0
    if curr == target: return 1
    return f(curr - 1, target) + f(curr - 3, target) + f(curr // 3, target)

# Обязательный проход через точки 40, 30 и 20
print(f(49, 40) * f(40, 30) * f(30, 20) * f(20, 12))
# Результат: 193648

```
### Задание 24
**Условие:** Максимальное количество подряд идущих символов без букв A, B, C, D.
```python
s = open('24.txt').read()
# Заменяем запрещенные символы на пробелы и разбиваем строку
for char in "ABCD":
    s = s.replace(char, ' ')

print(max(len(p) for p in s.split()))
# Результат: 193

```
### Задание 25
**Условие:** Числа > 500 000, сумма делителей R которых оканчивается на 6.
```python
def get_R(n):
    divs = set()
    for i in range(1, int(n**0.5) + 1):
        if n % i == 0:
            divs.add(i)
            divs.add(n // i)
    return sum(divs)

count = 0
n = 500001
while count < 5:
    r = get_R(n)
    if r % 10 == 6:
        print(n, r)
        count += 1
    n += 1

# Результат:
# 500032 1070356
# 500035 606816
# 500039 501456
# 500050 949716
# 500052 1333696

```
### Задание 26
**Условие:** Обслуживание в МФЦ. K окон. Если все заняты, ожидание до освобождения + 1 минута.
```python
f = open('26.txt')
k = int(f.readline())
n = int(f.readline())
clients = sorted([list(map(int, line.split())) for line in f if line.strip()])

windows = [0] * k # Время освобождения каждого окна
served = 0
last_win = 0

for start, end in clients:
    chosen_win = -1
    # Ищем свободное окно к моменту прихода
    for i in range(k):
        if windows[i] < start:
            chosen_win = i
            break
    
    if chosen_win != -1:
        windows[chosen_win] = end - 1
        served += 1
        last_win = chosen_win + 1
    else:
        # Ждем освобождения любого окна
        min_f = min(windows)
        if min_f + 1 <= 1440: # В рамках суток
            idx = windows.index(min_f)
            duration = end - start
            windows[idx] = (min_f + 1) + duration - 1
            served += 1
            last_win = idx + 1

print(served, last_win)
# Результат: 828 215

```
### Задание 27
**Условие:** Кластеризация звезд. Поиск центров (точка с мин. суммой расстояний до остальных).
```python
import math

def get_dist(p1, p2):
    return math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)

def find_center(cluster):
    return min(cluster, key=lambda p1: sum(get_dist(p1, p2) for p2 in cluster))

# Для краткости: логика поиска центров и фильтрации по Color/Size
# (N=оранжевый, I=планета, Z=зеленый, VI=супер-гигант)

```
**Ответы для файла 27:**
 * **Часть А:** A_s = 1600, A_w = 75807
 * **Часть Б:** B_s = 89639, B_w = 390553