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

ROMA706 ROMA706    1   15.06.2019 00:30    0

Ответы
romankovalev21 romankovalev21  12.07.2020 11:32
Сначала банальный код - рабочий, но уже на больших числах будет переполнение переменной факториала.
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.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика

Популярные вопросы