Напишите программу в паскаль, 50 )) определить количество повторений каждой из цифр 0,1, в числе n! , где n≤9, n-натуральное. напоминание: n! = 1*2*3*4*….*n.
//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.
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.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку