Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).
ответ: Проанализируем каждое число.
Число 1616 может быть результатом работы автомата, в этом случае исходное число могло быть 888.
Число 169 может быть результатом работы автомата, в этом случае исходное число могло быть 881.
Число 163 не может быть результатом работы автомата, поскольку в таком случае сумма среднего и старшего разрядов должна быть 16, а младшего и среднего — 3.
Число 1916 не может быть результатом работы автомата, поскольку нет таких цифр, сумма которых равна 19.
Число 1619 не может быть результатом работы автомата, поскольку числа записываются в порядке невозрастания.
Число 316 не может быть результатом работы автомата, поскольку числа записываются в порядке невозрастания, а число 31 невозможно получить сложением двух цифр.
Число 916 не может быть результатом работы автомата, поскольку числа записываются в порядке невозрастания.
Число 116 может быть результатом работы автомата,в этом случае исходное число могло быть 560.
ответ: 3.
Объяснение: