Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:
1. Если исходное число кратно 2, оно делится на 2, в противном случае из него вычитается 1.
2. Если полученное на предыдущем шаге число кратно 3, оно делится на 3, в противном случае из него вычитается 1.
3. Если полученное на предыдущем шаге число кратно 7, оно делится на 7, в противном случае из него вычитается 1.
4. Число, полученное на шаге 3, считается результатом работы алгоритма.
Пример. Дано число N = 44. Алгоритм работает следующим образом:
1. Число 44 кратно 2, оно делится на 2, получается 22.
2. Число 22 не кратно 3, из него вычитается 1, получается 21.
3. Число 21 кратно 7, оно делится на 7, получается 3.
4. Результат работы алгоритма R = 3.
Сколько существует различных натуральных чисел N, при обработке которых получится R = 1?
Рассмотрим работу алгоритма в обратном порядке:
Красным на рисунке отмечены пути, которые не подходят по условию задачи. Число 2 нельзя получить вычитанием единицы из числа 3, поскольку оно кратно трём. Число 21 нельзя получить вычитанием единицы из числа 22, поскольку оно кратно двум.
Таким образом, подходят пять чисел: 7, 9, 12, 16 и 42.
Ответ: 5.
Приведем решение Михаила Глинского.
Заметим, что исходное число не может превышать 1 · 2 · 3 · 7 = 42. С помощью программы на языке Паскаль будем перебирать числа от 1 до 42 и выводить те из них, при обработке которых по указанному алгоритму получается 1.
var x,i: integer;
begin
for i:=1 to 42 do begin
x:=i;
if x mod 2 =0 then x:= x div 2 else x:=x-1;
if x mod 3 =0 then x:= x div 3 else x:=x-1;
if x mod 7 =0 then x:= x div 7 else x:=x-1;
if x=1 then writeln(i);
end;
end.

