Девять участников проекта прислали свои программы, в 6
присланных работах имелось описание алгоритма. Далее привожу описание Ярослава
Ермилова.
Разложим данное число N на множители N=9a8b7c6d5e4f3g2hw. Если w>1 то ответом
будет -1. Иначе, так как нам необходимо найти наименьшее число, удовлетворяющее
условию задачи, то добьемся максимальности a в первую очередь, максимальности b во вторую, :. Таким образом, если мы запишем число Q=2:23:3:9:9, где каждая цифра повторяется h, g, :, a раз, то произведение его цифр будет равно N; оно будет самым коротким среди всех чисел
использующих другое разложение N на
множителии наименьшим среди чисел такой
же длины, но другой перестановки цифр, а значит будет
является ответом к задаче. Также необходимо рассмотреть отдельно случай N=0, в этом случае Q=10.
Нижеприведенная
программа реализации описанного алгоритма принадлежит мне.
Программа
var
n :longint;
a : array [2..9] of
integer;
i,
j : integer;
begin
assign(input, 'input.txt');
reset(input);
assign(output,
'output.txt'); rewrite(output);
read(n);
if n=0 then
write(10) else
begin
fori:=2 to 9 do a[i]:=0;
fori:=9 downto 2 do
while n mod i=0 do begin a[i]:=a[i]+1; n:=n div i end;