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.
orgot9
03.06.2022
Обратим внимание, что при возведении натурального числа a в натуральную степень n последняя цифра результата определяется, как значение последней цифры d числа a, возведенного в степень n поскольку операция возведения в степень n сводится к умножению n раз числа самого на себя, то получая при очередном умножении многоразрядное число, мы можем снова принимать в расчет только его младшую цифру. это позволяет построить цикл на n умножений, каждый раз получая младшую цифру при операции mod. var a: longint; n,d,i,p: integer; begin write('введите натуральное число a: '); read(a); write('введите натуральную степень n: '); read(n); a: =a mod 10; p: =a; for i: =2 to n do begin a: =a*p; a: =a mod 10 end; writeln('последняя цифра равна ',a) end. тестовое решение: введите натуральное число a: 154 введите натуральную степень n: 9 последняя цифра равна 4
petrowich076813
03.06.2022
2. 52 div 8 = 6 целое 2+6=8 целое √8≈2.828 вещественное trunc(2.828)=2 целое 15 mod 4=3 целое 3/3=1 целое 2-1=1 целое ответ: 1, тип целое 3. максимальное значение integer в языке паскаль зависит от реализации. стандарт языка определяет, что под переменную типа integer необходимо отвести объем памяти, достаточный для хранения значения 32767, т.е. в связи с этим в ранних реализациях паскаля под переменные типа integer отводилось 2 байта памяти. в современных реализациях под переменные этого типа отводится 4 байта, поэтому максимальное значение integer может достигать или 2147483647.4. если надо сохранить целое число, большее в 10 раз максимального значения integer, то нужно для поинтересоваться а) сколько байт отводится под integer? б) есть ли в данной реализации паскаля целые числа, под хранение которых отводится большее число байт? когда integer двухбайтовое, следует использовать четырехбайтное longint, а когда четырехбайтное - поинтересоваться наличием восьмибайтного типа int64.