Предмет: Информатика,
автор: Приииивет
напишите программу в паскаль, пожалуйста))) даю 50 баллов))
Определить количество повторений каждой из цифр 0,1,2,...,9 в числе n!, где n≤9, n-натуральное.
Напоминание: n! = 1*2*3*4*….*n.
Ответы
Автор ответа:
0
//PascalABC.NET
//Версия 3.3, сборка 1634
function f(n: integer): integer;
begin
var fx:=1;
for var i:=2 to n do fx:=fx*i;
f:=fx;
end;
begin
var n:=ReadInteger('n=');
for var i:=0 to 9 do writeln('цифра ',i,' повторяется в числе ',f(n),' ',f(n).ToString.Where(x->x.ToDigit=i).Count,' раз' );
end.
//Версия 3.3, сборка 1634
function f(n: integer): integer;
begin
var fx:=1;
for var i:=2 to n do fx:=fx*i;
f:=fx;
end;
begin
var n:=ReadInteger('n=');
for var i:=0 to 9 do writeln('цифра ',i,' повторяется в числе ',f(n),' ',f(n).ToString.Where(x->x.ToDigit=i).Count,' раз' );
end.
Автор ответа:
0
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.
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.
Похожие вопросы
Предмет: Английский язык,
автор: Аноним
Предмет: Физика,
автор: olyapaw30
Предмет: Математика,
автор: hjgjfgjfgjfgggg
Предмет: Математика,
автор: Wersena
Предмет: Математика,
автор: лили37