Задача к ЕГЭ по информатике на тему «Мусорки, кольцевая дорога» №5

В городе M расположена кольцевая автодорога длиной N километров с движением в обе стороны. На каждом километре автодороги расположены пункты приема мусора определенной вместимости. В пределах кольцевой дороги в одном из пунктов сборки мусора собираются поставить мусороперерабатывающий завод.

Мусор до завода доставляет автомобиль, но в него вмещается не более K килограмм мусора за раз.

Стоимость доставки мусора вычисляется как произведение количества необходимых заездов автомобиля до точки и расстояния от пункта сбора мусора до мусороперерабатывающего завода. Если мусороперерабатывающий завод находится рядом с пунктом сбора, расстояние считается нулевым.

Требуется определить общую сумму цифр всех возможных общих стоимостей доставок мусора со всех точек.

Входные данные:

Первое число N — количество контейнеров для мусора. Второе число K — вместимость автомобиля. Последующие N чисел — количество килограмм мусора, которое производится на точке.

В ответе укажите два числа через пробел: сначала искомое значение для файла А, затем для файла B.

# Файлик А
from math import ceil

f = open(’27A_07_5.txt’)

N = int(f.readline())
K = int(f.readline())
a = [ceil(int(i) / K) for i in f] * 2
summa = 0
for i in range(0, N):
    sm = 0
    for j in range(1 + i, N + i):
        d = abs(j - i)
        sm += a[j] * min(d, N - d)
    summa += sum(map(int, str(sm)))

print(summa)


# Файлик B
from math import ceil

f = open(’27B_07_5.txt’)

N = int(f.readline())
K = int(f.readline())
a = [ceil(int(i) / K) for i in f] * 2

sm = 0
for i in range(1, N):
    sm += a[i] * min(i, N - i)

l = sum(a[-(N // 2):])
r = sum(a[:N // 2])

sums = [sm]

for i in range(1, N):
    l += a[i - 1] - a[-(N // 2) + i - 1]
    r += a[(N // 2) + i - 1] - a[i - 1]
    sm += l - r
    sums.append(sm)







































































































































































































print(sum([sum(map(int, str(i))) for i in sums]))


Ответ: 35840 65261338
Оцените статью
Я решу все!