N-Factorial это произведение всех чисел от 1 до N. Для задного числа N определите сколько...

0 голосов
38 просмотров

N-Factorial это произведение всех чисел от 1 до N. Для задного числа N определите сколько нулей в конце десятичной записи N-Factorial .
В единственной строке входного файла содержится одно целое положительное числа NN(1


Информатика (12 баллов) | 38 просмотров
Дан 1 ответ
0 голосов

Сначала банальный код - рабочий, но уже на больших числах будет переполнение переменной факториала.
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<br>    c += n div pow;
    pow := pow * 5;
  end;
  writeln(c);
end.

(8.2k баллов)