# Python program to print Pascal’s Triangle

Pascal’s triangle is a pattern of the triangle which is based on nCr, below is the pictorial representation of Pascal’s triangle.

Example:

```Input: N = 5
Output:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1```

Method 1: Using nCr formula i.e. n!/(n-r)!r!

After using nCr formula, the pictorial representation becomes:

```          0C0
1C0   1C1
2C0   2C1   2C2
3C0   3C1   3C2    3C3```

Algorithm:

• Take a number of rows to be printed, lets assume it to be n
• Make outer iteration i from 0 to n times to print the rows.
• Make inner iteration for j from 0 to (N – 1).
• Print single blank space ” “.
• Close inner loop (j loop) //its needed for left spacing.
• Make inner iteration for j from 0 to i.
• Print nCr of i and j.
• Close inner loop.
• Print newline character (\n) after each inner iteration.

Implementation:

## Python3

 `# Print Pascal's Triangle in Python` `from` `math ``import` `factorial`   `# input n` `n ``=` `5` `for` `i ``in` `range``(n):` `    ``for` `j ``in` `range``(n``-``i``+``1``):`   `        ``# for left spacing` `        ``print``(end``=``" "``)`   `    ``for` `j ``in` `range``(i``+``1``):`   `        ``# nCr = n!/((n-r)!*r!)` `        ``print``(factorial(i)``/``/``(factorial(j)``*``factorial(i``-``j)), end``=``" "``)`   `    ``# for new line` `    ``print``()`

Output:

```      1
1 1
1 2 1
1 3 3 1
1 4 6 4 1```

Time complexity: O(N2)
Auxiliary space: O(1)

Method 2: We can optimize the above code by the following concept of a Binomial Coefficient, the i’th entry in a line number line is Binomial Coefficient C(line, i) and all lines start with value 1. The idea is to calculate C(line, i) using C(line, i-1).

`C(line, i) = C(line, i-1) * (line - i + 1) / i`

Implementations:

## Python3

 `# Print Pascal's Triangle in Python`   `# input n` `n ``=` `5`   `for` `i ``in` `range``(``1``, n``+``1``):` `    ``for` `j ``in` `range``(``0``, n``-``i``+``1``):` `        ``print``(``' '``, end``=``'')`   `    ``# first element is always 1` `    ``C ``=` `1` `    ``for` `j ``in` `range``(``1``, i``+``1``):`   `        ``# first value in a line is always 1` `        ``print``(``' '``, C, sep``=``'``', end='``')`   `        ``# using Binomial Coefficient` `        ``C ``=` `C ``*` `(i ``-` `j) ``/``/` `j` `    ``print``()`

Output:

```      1
1 1
1 2 1
1 3 3 1
1 4 6 4 1```

Time complexity: O(N2)
Auxiliary Space: O(1)

Method 3: This is the most optimized approach to print Pascal’s triangle, this approach is based on powers of 11.

```11**0 = 1
11**1 = 11
11**2 = 121
11**3 = 1331```

Implementation:

## Python3

 `# Print Pascal's Triangle in Python`   `# input n` `n ``=` `5`   `# iterarte upto n` `for` `i ``in` `range``(n):` `    ``# adjust space` `    ``print``(``' '``*``(n``-``i), end``=``'')`   `    ``# compute power of 11` `    ``print``(``' '``.join(``map``(``str``, ``str``(``11``*``*``i))))`

Output:

```      1
1 1
1 2 1
1 3 3 1
1 4 6 4 1```

Time Complexity: O(N)
Auxiliary Space: O(1)

However, this approach is applicable up to n=5 only.

Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!