Редакция для Сумма элементов


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.

1. Идея

Нужно найти сумму всех элементов массива.

Дано n чисел a_i, каждое число показывает количество товара в отдельной ячейке. Общее количество товара на складе — это просто сумма всех этих значений.

Значит, задача решается прямым проходом по массиву: читаем числа и постепенно добавляем их к ответу.

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

  • Требуется всего одно число: a_1 + a_2 + ... + a_n.
  • Элементы могут быть отрицательными, поэтому нельзя, например, брать только положительные.
  • По условию ответ может не помещаться в 32-битный тип, поэтому в C++ нужно использовать long long.
  • Никаких сложных структур данных не требуется.

3. Алгоритм

  1. Считать число n.
  2. Завести переменную sum, изначально равную 0.
  3. Считать n чисел.
  4. Каждое считанное число прибавлять к sum.
  5. Вывести sum.

В Python можно считать всю вторую строку списком и воспользоваться встроенной функцией sum.

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

По определению суммы массива нужно сложить все его элементы.

Алгоритм делает ровно это:

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

То есть итоговое значение точно совпадает с требуемым ответом.

5. Сложность

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

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()))
print(sum(a))

Комментарии

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