Var
a:array[0..9] of integer; { число повторений }
i,n,d,p:integer;
begin
Write('n = '); Read(n);
for i:=0 to 9 do a[i]:=0; { обнулить счетчики }
p:=1;
for i:=2 to n do p:=p*i;
Writeln(n,'! = ',p);
while p>0 do begin
d:=p mod 10;
a[d]:=a[d]+1;
p:=p div 10
end;
Writeln('Количество повторений цифр в числе:');
for i:=0 to 9 do
if a[i]>0 then Write(i,'-',a[i],' ');
Writeln
end.
Пример
n = 9
9! = 362880
Количество повторений цифр в числе:
0-1 2-1 3-1 6-1 8-2
второй вариант
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('n=');
var p:=2.to(n).Aggregate(1,(a,b)->a*b); // факториал
Writeln(n,'! = ',p);
Writeln('Количество повторений цифр в числе:');
foreach var i in
p.ToString.GroupBy(t->t).Select(t->(t.Key,t.Count)).OrderBy(t->t[0]) do
Write(i[0],'-',i[1],' ');
Writeln
end.