Найти количество N-значных чисел, у которых сумма цифр равна их произведению. Вывести наименьшее среди таких чисел для заданного N (N < 10).
Код решения:
*****
var
k,min:longint;
max,l,n:integer;
procedure recurs(i,a,d,s:longint);
var
j:integer;
begin
if i=0 then
begin
if d=s then
begin
k:=k+1;
if min=0 then min:=a;
end;
end
else
begin
if d<100 then
for j:=1 to 9 do
recurs(i-1,a*10+j,d*j,s+j);
end;
end;
begin
read(n);
for l:=1 to 9 do
recurs(n-1,l,l,l);
if n=1 then writeln(10,' ',0) else writeln(k,' ',min);
end.
*****
Код решения:
*****
var
k,min:longint;
max,l,n:integer;
procedure recurs(i,a,d,s:longint);
var
j:integer;
begin
if i=0 then
begin
if d=s then
begin
k:=k+1;
if min=0 then min:=a;
end;
end
else
begin
if d<100 then
for j:=1 to 9 do
recurs(i-1,a*10+j,d*j,s+j);
end;
end;
begin
read(n);
for l:=1 to 9 do
recurs(n-1,l,l,l);
if n=1 then writeln(10,' ',0) else writeln(k,' ',min);
end.
*****
А как будет выглядить код на С++?
ОтветитьУдалить