🐍🧩 ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² Python: 5 Π·Π°Π΄Π°Ρ‡ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π²Ρ‹ΠΊΠΎΠ²

ВычисляСм ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π½Π΅Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ холста, опрСдСляСм ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π² области, заполняСм массив ΠΏΠΎ диагоналям, складываСм Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ строку Π² Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ Паскаля.
🐍🧩 ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² Python: 5 Π·Π°Π΄Π°Ρ‡ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π²Ρ‹ΠΊΠΎΠ²

ΠšΠ°Ρ€Ρ‚ΠΈΠ½Π°

ПослС окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹ΠΌ ΡˆΠ΅Π΄Π΅Π²Ρ€ΠΎΠΌ ΠΊΡƒΠ±ΠΈΠ·ΠΌΠ° Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊ Ρ€Π΅ΡˆΠΈΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ холста ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π½Π΅Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΠΎΠΉ. Π₯олст ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ; ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· n ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ², располоТСнных Π² цСлочислСнных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ…, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ сторонам холста. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту холста, Π° Ρ‚Π°ΠΊΠΆΠ΅ количСство нарисованных Π½Π° холстС ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² n, ΠΈ опрСдСляСт Π½Π΅Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ холста.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π²Π²ΠΎΠ΄Π°
Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π²Π²ΠΎΠ΄Π°

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΠΏΠΎΠ΄Π°ΡŽΡ‚ΡΡ высота ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π° холста – Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ числа w ΠΈ h (1 ≀ w, h ≀ 100); Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ – Ρ†Π΅Π»ΠΎΠ΅ число n, количСство ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² (0 ≀ n ≀ 5000). Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ n строк с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡƒΠ³Π»ΠΎΠ² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² – x1, y1, x2, y2.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°

Π¦Π΅Π»ΠΎΠ΅ число – ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π½Π΅Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΠΎΠΉ повСрхности холста.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°

Π’Π²ΠΎΠ΄ #1:

        5 5
2
1 1 3 3
2 2 4 4

    

Π’Ρ‹Π²ΠΎΠ΄ #1:

        18
    

Π’Π²ΠΎΠ΄ #2:

        6 7
3
0 0 5 5
1 1 4 4
2 2 3 3

    

Π’Ρ‹Π²ΠΎΠ΄ #2:

        17
    
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

РСшСниС

Π­Ρ‚ΠΎ олимпиадная Π·Π°Π΄Π°Ρ‡Π°: Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ засчитано ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ТСстким трСбованиям – Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π·Π° 1 сСкунду, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 16 Мб памяти. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ эффСктивно Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТно: Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Β«Π² Π»ΠΎΠ±Β» Π½Π° массивС максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° исполняСтся Π·Π° 1,8-2 сСкунды, Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с использованиСм мноТСств ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π»ΠΈΠΌΠΈΡ‚ памяти.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ поэлСмСнтноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ большого массива Π² Python происходит слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, эффСктивноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ массива «кусками»:

        w, h = map(int, input().split())
arr = [[0 for w in range(w)] for h in range(h)]
n = int(input())
for i in range(n):
	x1, y1, x2, y2 = map(int, input().split())
	for x in range(x1, x2):
    	arr[x][y1:y2] = [1] * (y2 - y1)
print(w * h - sum(map(sum, arr)))
    

На массивС максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (ΠΏΡ€ΠΈ n = 5000) этот ΠΊΠΎΠ΄ выполняСтся Π·Π° 0,703 сСкунды.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎ диагоналям

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… числа n ΠΈ m, создаСт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ n Γ— m, ΠΈ заполняСт Π΅Π΅ ΠΏΠΎ диагоналям, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ справа-свСрху Π²Π»Π΅Π²ΠΎ-Π²Π½ΠΈΠ·.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎ диагоналям
Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎ диагоналям

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°

Π‘Ρ‚Ρ€ΠΎΠΊΠ° с числами n ΠΈ m, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°, заполнСнная Π² соотвСтствии с условиСм Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°

Π’Π²ΠΎΠ΄ #1:

        12 12
    

Π’Ρ‹Π²ΠΎΠ΄ #1:

        1   2   4   7   11  16  22  29  37  46  56  67 
3   5   8   12  17  23  30  38  47  57  68  79 
6   9   13  18  24  31  39  48  58  69  80  90 
10  14  19  25  32  40  49  59  70  81  91  100
15  20  26  33  41  50  60  71  82  92  101 109
21  27  34  42  51  61  72  83  93  102 110 117
28  35  43  52  62  73  84  94  103 111 118 124
36  44  53  63  74  85  95  104 112 119 125 130
45  54  64  75  86  96  105 113 120 126 131 135
55  65  76  87  97  106 114 121 127 132 136 139
66  77  88  98  107 115 122 128 133 137 140 142
78  89  99  108 116 123 129 134 138 141 143 144

    

РСшСниС

Бпособ 1:

        n, m = map(int, input().split())
mt = [[''] * m for i in '1'* n]
d = 1
for k in range(1, n + m + 1):
	for i in range(n):
    	for j in range(m):
        	if i + j + 1 == k:
            	mt[i][j] = str(d).ljust(3)
            	d += 1
[print(*r, sep='') for r in mt]

    

Бпособ 2:

        n, m = map(int, input().split())
matrix = [[0] * m for _ in range(n)]
template = sorted([(i + j, i, j) for i in range(n) for j in range(m)])
for id, item in enumerate(template):
	matrix[item[1]][item[2]] = id + 1
[print(*[str(item).ljust(3) for item in row]) for row in matrix]
    

Бпособ 3:

        [n, m] = [int(i) for i in input().split()]
matrix = [['0']*m for _ in range(n)]
num = 0
for d in range(m + n - 1):
	for i in range(n):
    	j = d - i
    	if 0 <= i < n and 0 <= j < m:
        	num += 1
        	matrix[i][j] = str(num).ljust(3)
for i in range(n):
	print(*matrix[i])

    

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π² области

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π² Π·Π°ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Π°Π½Π½ΠΎΠΉ области ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Π—Π°ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Π°Π½Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
Π—Π°ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Π°Π½Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС подаСтся число n – количСство строк. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ n строк с элСмСнтами ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт ΠΈΠ· Π·Π°ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Π°Π½Π½ΠΎΠΉ области ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°

Π’Π²ΠΎΠ΄:

        3
1 4 5
6 7 8
1 1 6
    

Π’Ρ‹Π²ΠΎΠ΄:

        8
    

РСшСниС

Бпособ 1:

        n = int(input())
m = [list(map(int, input().split())) for _ in range(n)]
print(max(max(m[i][j], m[i][~j], m[~i][j], m[~i][~j]) for i in range(n // 2 + 1) for j in range(i + 1)))

    

Бпособ 2:

        n = int(input())
a = [[*map(int, input().split())] for _ in range(n)]
print(max(a[i][j] for i in range(n) for j in range(n) if j <= i <= n - j - 1 or j >= i >= n - j - 1))

    

Бпособ 3:

        lst = []
m = int(input())
for i in range(m):
	row = [int(i) for i in input().split()]
	lst.extend(row[:min(i + 1, m - i)])
	lst.extend(row[max(-i - 1, i - m):])
print(max(lst))

    

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для вычислСния суммы Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π²Π° Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… числа n ΠΈ m β€” количСство строк ΠΈ столбцов Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°Ρ…, Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ΄Π°ΡŽΡ‚ΡΡ элСмСнты ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, послС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт пустая строка, Π° Π·Π°Ρ‚Π΅ΠΌ – элСмСнты Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° вывСсти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, раздСляя элСмСнты символом ΠΏΡ€ΠΎΠ±Π΅Π»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°

Π’Π²ΠΎΠ΄:

        3 3
9 6 3
3 1 1
4 7 5
 
0 3 2
1 7 8
4 2 3
    

Π’Ρ‹Π²ΠΎΠ΄:

        9 9 5
4 8 9
8 9 8
    

РСшСниС

Бпособ 1:

        n, m = [int(x) for x in input().split()]
A = [[int(x) for x in input().split()] for _ in range(n)]
input()
B = [[int(x) for x in input().split()] for _ in range(n)]
C = [[A[i][j] + B[i][j] for j in range(m)] for i in range(n)]
for x in C:
	print(*x)
    

Бпособ 2:

        n, m = map(int, input().split())
a = [[*map(int, input().split())] for _ in '.' * n]
input()
b = [[*map(int, input().split())] for _ in '.' * n]
[print(*(i + j for i, j in zip(l, k))) for l, k in zip(a, b)]
    

Бпособ 3:

        import numpy as np
n, m = map(int, input().split())
a = np.array(list(input().split() for _ in range(n)), int)
p = input()
b = np.array(list(input().split() for _ in range(n)), int)
c = a + b
for i in c:
	print(*i)
    

Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈΠ· Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Паскаля

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ число n, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ n-ΡƒΡŽ строку ΠΈΠ· Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Паскаля Π² Π²ΠΈΠ΄Π΅ списка. НумСрация строк начинаСтся с 0.

Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Паскаля
Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Паскаля

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°

Π’Π²ΠΎΠ΄:

        3
    

Π’Ρ‹Π²ΠΎΠ΄:

        [1, 3, 3, 1]
    

РСшСниС

Бпособ 1:

        def trianglePascal(n):
	if n == 0:
    	return [1]
	else:
    	st = trianglePascal(n - 1)
    	return [1] + [st[i] + st[i+1] for i in range(n - 1)] + [1]
n = int(input())
print(trianglePascal(n))

    

Бпособ 2:

        n = int(input())
li = [1]
for i in range(n):
	for j in range(len(li) - 1):
    	li[j] = li[j] + li[j + 1]
	li.insert(0, 1)
print(li)
    

Бпособ 3:

        from math import factorial
n = int(input())
print([int(factorial(n) / (factorial(j) * factorial(n - j))) for j in range(n + 1)])
    

Бпособ 4:

        l = [1]
for _ in range(int(input())):
	l = [a + b for a, b in zip([*l, 0], [0, *l])]
print(l)

    

Бпособ 5:

        import math
def fac(num):
	return math.factorial(num)
def pasc(n):
	row = [1]
	for i in range(1, n + 1):
    	row.append(int(fac(n) / (fac(i) * fac(n - i))))
	return row
n = int(input())
print(pasc(n))

    

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅




ΠœΠ•Π ΠžΠŸΠ Π˜Π―Π’Π˜Π―

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•