Программа должна вывести n-ую строку из треугольника Паскаля, где 3

0 голосов
26 просмотров

Программа должна вывести n-ую строку из треугольника Паскаля, где 3<=n<=50.


Информатика (57 баллов) | 26 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

PascalABC.NET 3.4.2, сборка 1884 от 24.11.2018

Внимание! Если программа не работает, обновите версию!

function Cnk(n, k: integer): BigInteger;

begin

 if (n = 0) or (n = k) then Result := 1

 else

 begin

   var (p1, p2) := (BigInteger(1), BigInteger(1));

   for var i := 2 to n - k do

     p2 *= i;

   for var i := k + 1 to n do

     p1 *= i;

   Result := p1 div p2

 end

end;


begin

 var n := ReadInteger('n=');

 if n = 0 then Print(1)

 else

 begin

   var St := new Stack;

   for var i := 0 to n div 2 do

   begin

     var b := Cnk(n, i);

     b.Print;

     St.Push(b)

   end;

   if n.IsEven then St.Pop;

   while St.Count > 0 do

   begin

     St.Peek.Print;

     St.Pop

   end

 end

end.

Пример

n= 50

1 50 1225 19600 230300 2118760 15890700 99884400 536878650 2505433700 10272278170 37353738800 121399651100 354860518600 937845656300 2250829575120 4923689695575 9847379391150 18053528883775 30405943383200 47129212243960 67327446062800 88749815264600 108043253365600 121548660036300 126410606437752 121548660036300 108043253365600 88749815264600 67327446062800 47129212243960 30405943383200 18053528883775 9847379391150 4923689695575 2250829575120 937845656300 354860518600 121399651100 37353738800 10272278170 2505433700 536878650 99884400 15890700 2118760 230300 19600 1225 50 1


image
(654k баллов)