Задача говорит: есть последовательность натуральных чисел — количество шаров, которые принёс каждый ученик, и в конце стоит число 0, которое служит признаком конца. Нужно вывести сумму всех чисел до 0 (0 не входит в сумму).
Пояснение и пошаговый алгоритм:
- Обозначим сумму как total = 0.
- Читаем числа по одному до тех пор, пока не встретится 0.
- Каждый введённый перед 0 неотрицательный номер добавляем к total: total += x.
- Когда встречаем 0 — прекращаем чтение и выводим total.
- Время работы пропорционально количеству введённых чисел до нуля (O(n)).
Пример:
- Ввод: 5, 3, 2, 0
- Шаги: total = 0 → +5 = 5 → +3 = 8 → +2 = 10 → встретили 0 → вывод 10
Примеры реализации (на учебном языке, добавляют до 0 и выводят сумму):
Python (вариант простого считывания построчно)
total = 0
while True:
n = int(input())
if n == 0:
break
total += n
print(total)
Python (вариант через список чисел, если числа даны сразу)
пример: nums = [5, 3, 2, 0]
nums = [5, 3, 2, 0]
total = 0
for x in nums:
if x == 0:
break
total += x
print(total)
C++ (минимальный рабочий пример)
#include <bits/stdc++.h>
using namespace std;
int main() {
long long total = 0, x;
while (cin >> x) {
if (x == 0) break;
total += x;
}
cout << total << "\n";
return 0;
}
Java (простая версия)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long total = 0;
while (sc.hasNextLong()) {
long x = sc.nextLong();
if (x == 0) break;
total += x;
}
System.out.println(total);
sc.close();
}
}
Советы:
- 0 не учитывается в сумме, это признак конца ввода.
- Если первый введённый номер уже 0, результат будет 0.
- Можно реализовать и через массив/список, если данные заранее известны, но принцип той же: суммировать все до первого 0.