Че-то в голову ничего не приходит кроме тупого брута((
Код:
program laba;
function f (n : integer) : longint;
begin
if n = 0 then
f := 1
else
f := n * f (n - 1);
end;
var
i, n, a : longint;
begin
write ('Vvedite chislo a: ');
readln (a);
i := 0;
while 1 = 1 do begin
if (f (i) < a) and (f (i + 1) > a) then begin
writeln ('a = ', a);
writeln ('n = ', i);
writeln ('n! = ', f (i));
writeln ('(n + 1)! = ', f (i + 1));
break;
end;
inc (i);
end;
end.