Найдите сумму цифр целого числа n.
Вход. Одно целое 32-х разрядное число n (число может быть
отрицательным).
Выход. Выведите сумму цифр числа n.
Пример
входа |
Пример
выхода |
321 |
6 |
элементарная задача
Анализ алгоритма
Входное число может быть
отрицательным. В таком случае изменим его знак (сумма цифр чисел -n и n одинаковая).
Реализуем рекурсивную
функцию sum(n), вычисляющую сумму
цифр числа n, согласно рекурсивной
схеме:
sum(n) =
·
если n < 10, то
сумма его цифр равна n;
·
иначе вычисляем сумму цифр числа n / 10 и прибавляем к нему последнюю цифру n % 10 числа n.
Задачу можно также решить
при помощи цикла (без использования рекурсии).
Пример
Реализация алгоритма
Функция sum вычисляет сумму
цифр числа n.
int sum(int n)
{
if (n <
10) return n;
return n % 10
+ sum(n / 10);
}
Основная часть программы. Читаем входное число n.
scanf("%d",&n);
Если число n отрицательно, то меняем его знак на противоположный.
if (n < 0) n = -n;
Вычисляем и выводим сумму цифр числа n.
res = sum(n);
printf("%d\n",res);
Реализация алгоритма – итерация
scanf("%d",&n);
Если число n отрицательно, то меняем его знак на противоположный.
if (n < 0)
n = -n;
В переменной sum находим сумму цифр числа n.
sum = 0;
Перебираем цифры
числа n. Прибавляем
каждую цифру числа n к сумме sum.
while(n > 0)
{
sum = sum + n %
10;
n = n / 10;
}
Выводим ответ.
printf("%d\n",sum);
Java реализация
import java.util.*;
public class
{
static int sum(int n)
{
if (n < 10) return n;
return n % 10 + sum(n / 10);
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
if (n < 0) n = -n;
int res = sum(n);
System.out.println(res);
con.close();
}
}
Читаем входное число n.
n = int(input())
Если число n отрицательно, то меняем его знак на противоположный.
if n < 0: n = -n;
Перебираем цифры
числа n. Прибавляем
каждую цифру числа n к сумме sum.
sum = 0
while n > 0:
sum = sum + n % 10;
n = n // 10;
Выводим ответ.
print(sum)
Python реализация – функция
Функция sum вычисляет сумму
цифр числа n.
def sum(n):
if n < 10: return n
return sum(n
// 10) + n % 10
Основная часть
программы. Читаем входное число n.
n = int(input())
Если число n отрицательно, то меняем его знак на противоположный.
if n < 0: n =
-n;
Вычисляем и выводим сумму
цифр числа n.
print(sum(n))
Python реализация – строка
Читаем входное число n.
n = int(input())
Если число n отрицательно, то меняем его знак на противоположный.
if n < 0 : n = -n
Преобразуем целое число n в строку: str(n). Далее из строки делаем список цифр. Например, если n = 123, то str(n) = “123” и list(map(int, str(n))) = [1, 2, 3]. Функция map применяет функцию int к каждому символу строки str(n), преобразуя каждый символ в целочисленное значение.
s = list(map(int,str(n)))
Выводим ответ – сумму чисел списка s.
print(sum(s))