program Friendly;
uses
SysUtils; // для IntToStr
var
a, b, i, pa, pb: LongInt;
sa, sb: string;
f: Boolean;
begin
Write ('A, B = ');
ReadLn (a, b);
sa := IntToStr (a);
sb := IntToStr (b);
f := True;
for i := 0 to 9 do begin
pa := Pos (IntToStr (i), sa);
pb := Pos (IntToStr (i), sb);
if ((pa <> 0) and (pb = 0)) or ((pa = 0) and (pb <> 0)) then begin
f := False;
Break;
end;
end;
if f then
WriteLn ('YES')
else
WriteLn ('NO');
ReadLn;
end.
Пусть исходное число будет abc, где a - первая цифра, b - вторая, c - третья.
b,c - цифры => они принимают целые значения от 0 до 9. Так как число трехзначное, то a не может быть равно 0 => a принимает целые значения от 1 до 9.
Произведение двух цифр не превосходит 9*9=81.
Ищем произведения цифр в числе 123:
1 и 23 - неверно(1=1*1, но 23=1*c=> c=23>9)
12 и 3 - верно(1*3 и 3*4, записаны в порядке убывания)
Нам нужно найти наименьшее число, значит значения a и b как первых цифр числа должны быть минимальны.
По условию:
a*b=3
b*c=12
Подбираем значения a,b и c:
a=1; b=3; c=12/3=4 - верно, число 134
a=3; b=1; c=12/1=12 - неверно
В итоге, получили, что число 134 - минимальное.
ответ: 134