Редакция для Сумма массива


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Автор: montes332

1. Идея

Нужно просто найти сумму всех n чисел массива.

Для этого достаточно завести переменную sum, изначально равную 0, и по очереди прибавлять к ней каждый элемент массива.

2. Наблюдения

  • По условию числа могут быть как положительными, так и отрицательными, поэтому нельзя использовать какие-то специальные упрощения: нужно учитывать все элементы.
  • Ответ всегда один — это сумма всех данных чисел.
  • В ограничениях a_i могут быть до 10^9, а n до 2 * 10^5, поэтому в C++ сумму лучше хранить в типе long long, иначе возможно переполнение int.
  • В Python целые числа имеют произвольную длину, поэтому дополнительной обработки не нужно.

3. Алгоритм

  1. Считать n.
  2. Завести переменную sum = 0.
  3. Считать n чисел.
  4. Для каждого числа x выполнить sum += x.
  5. Вывести sum.

4. Почему это работает

Итог по строке отчёта — это сумма всех записанных чисел.

Если последовательно идти по массиву и каждый элемент прибавлять к переменной sum, то после обработки:

  • первого элемента в sum будет сумма первых 1 чисел;
  • второго — сумма первых 2 чисел;
  • ...
  • после всех n элементов в sum будет сумма всех чисел массива.

Именно это число и требуется вывести.

5. Сложность

  • Время: O(n), потому что каждое число обрабатывается ровно один раз.
  • Память:
    • в C++: O(1), так как числа можно суммировать сразу при чтении;
    • в Python в данном эталонном решении: O(n), потому что сначала читается список a.

6. Код на C++17

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    long long sum = 0;
    for (int i = 0; i < n; i++) {
        long long x;
        cin >> x;
        sum += x;
    }

    cout << sum << '\n';
    return 0;
}

7. Код на Python 3

n = int(input())
a = list(map(int, input().split()))

s = 0
for x in a:
    s += x

print(s)

Комментарии

Еще нет ни одного комментария.