Задача: прочитав последовательность натуральных чисел до сигнала 0, найти сумму тех чисел, которые кратны 6 и оканчиваются цифрой 4. Ввод заканчивается нулём (0 не входит в последовательность). Числа не более 30000, до 1000 элементов.
Пояснение к алгоритму (пошагово)
- Условия отбора чисел:
- число кратно 6: число % 6 == 0
- оканчивается на 4: число % 10 == 4
- Итоговая сумма складывается только по тем числам, которые проходят оба условия.
- Ввод читается последовательно до тех пор, пока не встретится 0 (последовательность может быть предоставлена через пробелы или переносы строк).
- Сложность: время On, где n — количество считанных чисел; память O(1).
Пример разбора для входа, эквивалентного "14 24 144 221 20 0":
- 14: не подходит (14 % 6 != 0)
- 24: подходит (24 % 6 == 0, 24 % 10 == 4)
- 144: подходит (144 % 6 == 0, 144 % 10 == 4)
- 221: не подходит
- 20: не подходит (оканчивается не на 4)
- 0: концовка
Сумма: 24 + 144 = 168. Это совпадает с приведённым примером.
Код на Python (удобно для быстрых проверок)
import sys
def main():
total = 0
for token in sys.stdin.read().split():
x = int(token)
if x == 0:
break
if x % 6 == 0 and x % 10 == 4:
total += x
print(total)
if __name__ == "__main__":
main()
Код на C++ (быстрый и надёжный)
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long sum = 0;
long long x;
while (cin >> x) {
if (x == 0) break;
if (x % 6 == 0 && x % 10 == 4) sum += x;
}
cout << sum;
return 0;
}
Если нужно, могу привести реализацию на Java или объяснить любую деталь более подробно.