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

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.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы