Цель: понять задачу и получить пошаговое решение.
Дано:
- N — количество рыцарей.
- далее идут N чисел — подарки каждого рыцаря по очереди.
- в последней строке (или последнем числе) число K — принимают по K человек в день (в последний день может остаться меньше).
Задача: разбить последовательность подарков на группы длиной K (последняя группа может быть короче) и посчитать сумму подарков в каждой группе. Вывести получившийся список сумм по порядку.
Пошаговое решение:
- Прочитать входные данные: сначала N, затем N чисел подарков, затем K.
- Разбить список подарков на блоки по K элементов: для i = 0, K, 2K, … до конца.
- Для каждого блока посчитать сумму его элементов и сохранить в результативный список.
- Вывести элементы этого списка через пробел.
Сложность: O(N) по времени, O(ceil(N/K)) по памяти.
Пример на заданных числах:
- N = 5
- подарки: [12, 3, 7, 35, 1]
- K = 3
Блоки по K:
- Блок 1: [12, 3, 7] → сумма = 22
- Блок 2: [35, 1] → сумма = 36
Итоговый список сумм по дням: [22, 36]
Окружение вывода: обычно через пробел. Для примера вывод будет:
22 36
Если нужно привести именно код на Python (для проверки на экзамене), можно использовать такой подход:
def per_day_sums(nums, K):
days = []
for i in range(0, len(nums), K):
days.append(sum(nums[i:i+K]))
return days
Пример использования
Вход: N, затем N чисел, затем K
data = [N, gifts..., K]
N = data[0]; gifts = data[1:1+N]; K = data[1+N]
result = per_day_sums(gifts, K)
print(" ".join(map(str, result)))
В вашем конкретном примере вывод будет:
22 36
Если же система ожидает другое оформление вывода (например, одну цифру), корректируйте вывод в соответствии с требованиями теста. Но с точки зрения задачи — именно сумма по каждому дню в порядке: 22, затем 36.