Цифровое Домашнее Задание
ЗАДАНИЕ 3
Выберите один из нескольких вариантов
Прочитайте задачу и выберите вариант фрагмента программы, который позволит получить верный ответ:
Дано целое число \(n\). Найдите сумму цифр этого числа.
Пояснение:
Для нахождения суммы цифр числа нужно последовательно извлекать последнюю цифру числа и прибавлять её к общей сумме, затем отбрасывать эту цифру от числа. Этот процесс повторяется до тех пор, пока число не станет равным нулю.
Рассмотрим предложенные варианты для числа \(n = 2348\):
Вариант 1:
k = 1
n = 2348
while n > 0:
k = k + n % 10
n = n // 10
print(k)
Проверим выполнение этого кода:
- Начальные значения: \(k = 1\), \(n = 2348\)
- Итерация 1:
- \(n > 0\) (2348 > 0) - условие истинно.
- \(k = 1 + 2348 \% 10 = 1 + 8 = 9\)
- \(n = 2348 // 10 = 234\)
- Итерация 2:
- \(n > 0\) (234 > 0) - условие истинно.
- \(k = 9 + 234 \% 10 = 9 + 4 = 13\)
- \(n = 234 // 10 = 23\)
- Итерация 3:
- \(n > 0\) (23 > 0) - условие истинно.
- \(k = 13 + 23 \% 10 = 13 + 3 = 16\)
- \(n = 23 // 10 = 2\)
- Итерация 4:
- \(n > 0\) (2 > 0) - условие истинно.
- \(k = 16 + 2 \% 10 = 16 + 2 = 18\)
- \(n = 2 // 10 = 0\)
- Итерация 5:
- \(n > 0\) (0 > 0) - условие ложно. Цикл завершается.
Вывод: \(k = 18\). Сумма цифр числа 2348: \(2 + 3 + 4 + 8 = 17\). Результат неверный, так как начальное значение \(k\) было 1, а не 0.
Вариант 2:
k = 0
n = 2348
while n > 0:
k = k + n % 10
n = n // 10
print(k)
Проверим выполнение этого кода:
- Начальные значения: \(k = 0\), \(n = 2348\)
- Итерация 1:
- \(n > 0\) (2348 > 0) - условие истинно.
- \(k = 0 + 2348 \% 10 = 0 + 8 = 8\)
- \(n = 2348 // 10 = 234\)
- Итерация 2:
- \(n > 0\) (234 > 0) - условие истинно.
- \(k = 8 + 234 \% 10 = 8 + 4 = 12\)
- \(n = 234 // 10 = 23\)
- Итерация 3:
- \(n > 0\) (23 > 0) - условие истинно.
- \(k = 12 + 23 \% 10 = 12 + 3 = 15\)
- \(n = 23 // 10 = 2\)
- Итерация 4:
- \(n > 0\) (2 > 0) - условие истинно.
- \(k = 15 + 2 \% 10 = 15 + 2 = 17\)
- \(n = 2 // 10 = 0\)
- Итерация 5:
- \(n > 0\) (0 > 0) - условие ложно. Цикл завершается.
Вывод: \(k = 17\). Это верная сумма цифр числа 2348.
Вариант 3:
k = 0
n = 2348
while n > 0:
k = k * n % 10
n = n // 10
print(k)
Проверим выполнение этого кода:
- Начальные значения: \(k = 0\), \(n = 2348\)
- Итерация 1:
- \(n > 0\) (2348 > 0) - условие истинно.
- \(k = 0 * 2348 \% 10 = 0 * 8 = 0\)
- \(n = 2348 // 10 = 234\)
- Итерация 2:
- \(n > 0\) (234 > 0) - условие истинно.
- \(k = 0 * 234 \% 10 = 0 * 4 = 0\)
- \(n = 234 // 10 = 23\)
- Далее \(k\) всегда будет оставаться 0, так как умножается на 0.
Вывод: \(k = 0\). Это неверный результат.
Вывод:
Единственный вариант, который правильно вычисляет сумму цифр числа, это второй вариант, где начальное значение \(k\) равно 0, и в цикле происходит сложение цифр.
Ответ:
Правильный вариант:
k = 0
n = 2348
while n > 0:
k = k + n % 10
n = n // 10
print(k)
