Автомат получает на вход четырехзначное число . По этому числу строится новое число
по таким правилам:
Повторяется раз:
- Последняя цифра числа увеличивается на единицу;
- Последняя цифра числа переставляется в начало числа;
Вывод получившегося числа .
Примечание: В процессе работы алгоритма не должно происходить ситуаций переполнения (когда последняя цифра числа и она увеличивается на единицу). Если происходит переполнение, то число
считается ошибочным (недействительным) при данном числе
.
Пример: при исходных числах и
автомат выведет число
.
Укажите наименьшее число такое, что при
сумма цифр числа
равна
, и третья цифра числа
равна
.
Решение руками:
Запишем исходное число в таком виде:
.
Если , то новое число будет представлено в виде
. Заметим, что сумма цифр нового числа
на
больше чем сумма цифр исходного числа
. Тогда сумма цифр исходного числа
есть
. Также заметим, что если на третьей позиции в числе
стоит
, то верно
, откуда
; Значит, необходимо подобрать такие
, чтобы их сумма была равна
, и число
было минимально при этом
а
Подбор можно осуществить, постепенно уменьшая
, начиная с 8, и подбирая
и
под это значение
так, чтобы сумма была равна 18, и при это не было переполнения разрядов. Таким образом, первое значение
, у которого
а
, и нет переполнения разрядов, будет равно
(число
). Так как мы перебирали снизу и ничего улучшить уже нельзя (переставить цифры, например, чтобы уменьшить), это и есть ответ.
Решение программой:
for i in range(1000,10000):
flag = True
s = str(i)
for j in range(6):
if int(s[-1]) < 9:
s = str(int(s) + 1)
s = s[-1] + s[:3]
else:
flag = False
break
if sum([int(x) for x in s]) == 31 and s[2] == ’8’ and flag:
print(i)
break