N-factorial это произведение всех чисел от 1 до n. для задного числа n определите сколько нулей в конце десятичной записи n-factorial . в единственной строке входного файла содержится одно целое положительное числа nn(1
Сначала банальный код - рабочий, но уже на больших числах будет переполнение переменной факториала. var n, i, fact, ans : integer; begin read(n); fact := 1; for i := 2 to n do fact := fact * i; while (fact mod 10 = 0) do begin ans := ans + 1; fact := fact div 10; end; writeln(ans); end.
Теперь более "умный" код, в нём использован тот факт, что простое число p входит в разложение факториала числа N = [N/p] + [N/p^2] + [N/p^3] + ..., где [x] - целая часть числа x. var n, i, fact, c, pow, ans : integer; {c - сколько раз входит в разложение числа n! цифра 5} begin read(n); pow := 5; while (pow <= n) do begin c += n div pow; pow := pow * 5; end; writeln(c); end.
var n, i, fact, ans : integer;
begin
read(n);
fact := 1;
for i := 2 to n do
fact := fact * i;
while (fact mod 10 = 0) do begin
ans := ans + 1;
fact := fact div 10;
end;
writeln(ans);
end.
Теперь более "умный" код, в нём использован тот факт, что простое число p входит в разложение факториала числа N = [N/p] + [N/p^2] + [N/p^3] + ..., где [x] - целая часть числа x.
var n, i, fact, c, pow, ans : integer;
{c - сколько раз входит в разложение числа n! цифра 5}
begin
read(n);
pow := 5;
while (pow <= n) do begin
c += n div pow;
pow := pow * 5;
end;
writeln(c);
end.