Статья Автор: Лебедев Дмитрий

TUZ_6-01_Подсчёт количества переносов при сложении двух заданных чисел

TUZ_6-01_Подсчёт количества переносов при сложении двух заданных чисел

TUZ_6-01_Подсчёт количества переносов при сложении двух заданных чисел
6.1. Подсчет количества переносов при сложении двух заданных чисел
При сложении двух или более цифр происходит перенос, если результат сложения превышает наибольшее число,
которое может быть представлено одной цифрой.
В этом задании вы должны подсчитать количество переносов, возникающих при сложении двух чисел.
В табл. 6.1 показаны ожидаемые результаты для некоторых входных данных.
Таблица 6.1. Некоторые ожидаемые результаты для задачи подсчета количества переносов при сложении двух заданных чисел
a, b Ожидаемый результат
434, 289 2
2, 8 1
3, 3 0
8856, 5936 3

Алгоритм
В решении используются два алгоритма.
Первый рекурсивно вызывает второй (get_digit_sum_recursive). Рекурсивный алгоритм вычисляет сумму заданных цифр a, b: a + b.
Фактически он неоднократно удаляет последнюю цифру числа, используя целочисленное деление (n//10),
и добавляет ее к сумме до тех пор, пока не останется больше цифр.
Рекурсивный алгоритм выполняет следующие шаги:
  1.  Изначально есть положительное целое число number.
  2.  Если число number меньше 10, то возвращается number.
  3.  В противном случае вычисляется сумма последней цифры в number и суммы остальных цифр в number,
    для чего берется остаток и частное от целочисленного деления number на 10 соответственно.
  4.  Затем рекурсивно выполняются шаги, перечисленные выше.
  5.  И возвращается результат рекурсивного вызова.
  6.  Первый алгоритм выполняет следующие шаги.
  7.  Принимаются два положительных целых числа num1 и num2.
  8.  Вычисляется сумма цифр в num1 с использованием get_digit_sum_ recursive и 
    сохраняется в переменной digit_sum_num1.
  9.  Вычисляется сумма цифр в num2 с использованием get_digit_sum_ recursive и 
    сохраняется в переменной digit_sum_num2.
  10.  Вычисляется сумма цифр в num1 + num2 с использованием функции get_digit_sum_recursive и 
    сохраняется в переменной digit_sum_num1_ num2.
  11.  Вычисляется общее количество переносов как (digit_sum_num1 + digit_sum_num2 – digit_sum_num1_num2)//9.
  12.  И полученное общее количество переносов возвращается.


Пропустить Навигационные Ссылки. Чтобы оставить комментарий нужна авторизация
Печать