1014 Timus answer/Решение задачи 1014


№1014
http://acm.timus.ru/problem.aspx?space=1&num=1014
ЖМИ ДАЛЕЕ>>>


РЕШЕНИЕ:

PASCAL

Const
D: array[1..4] of Integer = (2,3,5,7);
Var
S,T,R: String;
H: Char;
A,I,J,K,K2,K3,M,N: LongInt;
Begin
FillChar(R,SizeOf(R),'9');
R[0]:=#255;
S:='';
Readln(A);
If A=1 then begin
Writeln('1');
Halt;
End;
If A=0 then begin
Writeln('10');
Halt;
End;
K2:=0; K3:=0;
For I:=1 to 4 do
While (A mod D[I])=0 do begin
S:=S+Chr(D[I]+48);
If I=1 then Inc(K2);
If I=2 then Inc(K3);
A:=A div D[I];
End;
If A<>1 then begin
Writeln('-1');
Halt;
End;
K:=K2;
If K>K3 then K:=K3;
For I:=0 to K do begin
T:=S;
For J:=1 to I do begin
Delete(T,Pos('2',T),1);
Delete(T,Pos('3',T),1);
T:=T+'6';
End;
While Pos('33',T)>0 do begin
Delete(T,Pos('33',T),2);
T:=T+'9';
End;
While Pos('222',T)>0 do begin
Delete(T,Pos('222',T),3);
T:=T+'8';
End;
While Pos('22',T)>0 do begin
Delete(T,Pos('22',T),2);
T:=T+'4';
End;
For N:=1 to Length(T) do
For M:=2 to Length(T) do
If T[M-1]>T[M] then begin
H:=T[M-1];
T[M-1]:=T[M];
T[M]:=H;
End;
If T[0]<R[0] then R:=T;
If (T[0]=R[0]) and (T<R) then R:=T;
End;
Writeln(R);
End.


1014. Произведение цифр

Ограничение времени: 1.0 секунды
Ограничение памяти: 16 МБ
Ваша задача — найти минимальное положительное целое число Q такое, что произведение цифр числа Q в точности равняется N.

Исходные данные

Целое число N (0 ≤ N ≤ 109).

Результат

Выведите целое число Q. Если такого числа не существует, выведите −1.

Пример

исходные данныерезультат
10
25
Источник задачи: Ural State University Internal Contest '99 #2