На рисунке на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x, при вводе которого алгоритм печатает сначала 15, а потом 7.
Проанализируем, что происходит в результате выполнения данной программы. Для этого в качестве x рассмотрим произвольное целое число, входящее в диапазон типа объявленной переменной (в нашем случае −32768 ≤ x ≤ 32767), например, 412.
Выполняемый оператор | x | a | b | k |
readln(x) | 412 | – | – | – |
a := 0 | 412 | 0 | – | – |
b := 10 | 412 | 0 | 10 | – |
логическое условие x > 0 истинно (412 > 0) | ||||
k := x mod 10 | 412 | 0 | 10 | 2 |
a := a + k | 412 | 2 | 10 | 2 |
логическое условие k < b истинно (2 < 10) | ||||
b := k | 412 | 2 | 2 | 2 |
x := x div 10 | 41 | 2 | 2 | 2 |
логическое условие x > 0 истинно (41 > 0) | ||||
k := x mod 10 | 41 | 2 | 2 | 1 |
a := a + k | 41 | 3 (= 2 + 1) | 2 | 1 |
логическое условие k < b истинно (1 < 2) | ||||
b := k | 41 | 3 | 1 | 1 |
x := x div 10 | 4 | 3 | 1 | 1 |
логическое условие x > 0 истинно (4 > 0) | ||||
k := x mod 10 | 4 | 3 | 1 | 4 |
a := a + k | 4 | 7 (= 3 + 4) | 1 | 4 |
логическое условие k < b ложно (4 6< 1) | ||||
x := x div 10 | 0 | 7 | 1 | 4 |
логическое условие x > 0 ложно (0 6> 0) | ||||
writeln(a) | 0 | 7 | 1 | 4 |
writeln(b) | 0 | 7 | 1 | 4 |
Заметим, что a принимает значение, равное сумме цифр числа x, а переменная b — наименьшей цифре числа x.
Из условия задачи имеем:
1) a = 15, значит, сумма цифр исходного числа x равна 15;
2) b = 7, значит, в исходном числе x наименьшая цифра равна 7.
В наименьшем из таких чисел x цифра, стоящая в старшем разряде, должна быть наименьшей, то есть 7 (мы определили, что эта цифра наименьшая в числе). Тогда сумма цифр, расположенных правее 7 равна 15 − 7 = 8. Так как 8 < 10, а нам требуется найти наименьшее число, то исходное число является двузначным, и в разряде единиц у него стоит 8.
Значит, числом x, удовлетворяющим условию задачи, является 78.
Ответ: 78