Задача взята с сайта e-olymp.
Задача
Задано длинное число. Найти сумму его четных цифр.
Входные данные
Одно натуральное число $n (n ≤ 10^{100} )$.
Выходные данные
Вывести сумму четных цифр числа $n$.
Тесты
# | ВХОДНЫЕ ДАННЫЕ | ВЫХОДНЫЕ ДАННЫЕ |
---|---|---|
1 | 2345 | 6 |
2 | 3458937487534533459 | 32 |
3 | 888888888888888888888888888888 | 240 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int main() { char c; int sum = 0; while(cin >> c) if((c - '0') % 2 == 0) sum += (c - '0'); cout << sum << '\n'; return 0; } |
Решение задачи
Переменная
c — является переменной типа
char, что означает, что
cin в этом случае будет считывать по одному символу с потока. По этой причине, чтобы решить данную задачу, нужно считывать заданное число с помощью
cin в цикле
while до тех пор, пока происходит ввод данных с клавиатуры. Проверяя каждую цифру введенного числа на четность, будем прибавлять четные к переменной
sum.
Для работы с символом
c как с числом, будем писать
c - '0'.
Ссылки
Условие задачи на e-olymp
Код программы на ideone
Исправьте отступ.
В описании решения можно чуть подробнее написать, как вы «считываете число в цикле».
И ещё
— «т. е. найти сумму четных цифр длинного числа» излишне. Зачем повторять условие?
— Добавьте объяснение особенности работы ввода отдельных символов. Вы же помните, что обычно cin читает значения разделенные пробелами, табуляциями, переводами строки… Он и тут так работает, но если пробелов нет, то…
— Это «$n (n ≤ 10$$100$$)$» одна tex-формула. Не нужно комбинировать html и tex, только, чтобы не искать, как задаются степени.