Найдите наименьшее натуральное число, которое нужно подать на вход алгоритма, чтобы в результате были выведены числа 3 и 7.

kononovadm kononovadm    2   24.06.2019 19:48    0

Ответы
sophiaukraineoyy0ey sophiaukraineoyy0ey  02.10.2020 10:49

Пока N > 0

S := S + N mod 10

N := N div 10

N mod 10 - это последняя цифра числа N,

N div 10 - это результат отбрасывания последней цифры из N,

т.е. в результате S будет содержать сумму цифр N

Сама же программа считает сумму цифр числа S, затем сумму цифр получившегося числа, и т.д., пока не получится одна цифра.

Кажется, такую цифру называют "цифровым корнем" числа, но на самом деле в десятичной системе счисления это просто остаток от деления на 9.

(поскольку (10*a + b) mod 9 = (9*a + a + b) mod 9 = (a+b) mod 9)

Для вывода 0 и 7 на вход надо подать число S = 7

Для вывода 1 и 7 на вход нужно подать число >= 10 с суммой цифр = 7, минимальным таким числом является 16.

Для вывода 2 и 7 на вход нужно подать такое число, что если сумму его цифр передать на вход, будет выведено 1 и 7. Т.е. сумма цифр будет по крайней мере не меньше 16, значит само число не меньше 79 (это наименьшее число, сумма цифр которых >= 16).

Для вывода 3 и 7 нужно подать число, сумма цифр которого при передаче на вход дас результат 2 и 7, т.е. сумма цифр не меньше 79, тогда само число не меньше 799999999 (наименьшее число с суммой цифр >= 79).

Получаем, что число S = 799999999 дает требуемый вывод, и не существует чисел меньше, которые бы тоже давали такой результат (показано ранее + можно дополнительно проверить программно, перебирая всевозможные S, занимает несколько минут).

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика