Задача говорит: есть последовательность натуральных чисел — количество шаров, которые принёс каждый ученик, и в конце стоит число 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.