Редакция для Сумма массива
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.
Submitting an official solution before solving the problem yourself is a bannable offence.
Автор:
1. Идея
Нужно просто найти сумму всех n чисел массива.
Для этого достаточно завести переменную sum, изначально равную 0, и по очереди прибавлять к ней каждый элемент массива.
2. Наблюдения
- По условию числа могут быть как положительными, так и отрицательными, поэтому нельзя использовать какие-то специальные упрощения: нужно учитывать все элементы.
- Ответ всегда один — это сумма всех данных чисел.
- В ограничениях
a_iмогут быть до10^9, аnдо2 * 10^5, поэтому в C++ сумму лучше хранить в типеlong long, иначе возможно переполнениеint. - В Python целые числа имеют произвольную длину, поэтому дополнительной обработки не нужно.
3. Алгоритм
- Считать
n. - Завести переменную
sum = 0. - Считать
nчисел. - Для каждого числа
xвыполнитьsum += x. - Вывести
sum.
4. Почему это работает
Итог по строке отчёта — это сумма всех записанных чисел.
Если последовательно идти по массиву и каждый элемент прибавлять к переменной sum, то после обработки:
- первого элемента в
sumбудет сумма первых 1 чисел; - второго — сумма первых 2 чисел;
- ...
- после всех
nэлементов вsumбудет сумма всех чисел массива.
Именно это число и требуется вывести.
5. Сложность
- Время:
O(n), потому что каждое число обрабатывается ровно один раз. - Память:
- в C++:
O(1), так как числа можно суммировать сразу при чтении; - в Python в данном эталонном решении:
O(n), потому что сначала читается списокa.
- в C++:
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)
Комментарии