Предмет: Информатика, автор: Meir63

Можете помощь по языке: Python
Даны числа n и m. Создайте массив A[n][m] и заполните его, как показано на примере.

Входные данные
Программа получает на вход два числа n и m.

Выходные данные
Программа должна вывести полученный массив.

примеры
входные данные:
4 10

выходные данные:
0 1 3 6 10 14 18 22 26 30
2 4 7 11 15 19 23 27 31 34
5 8 12 16 20 24 28 32 35 37
9 13 17 21 25 29 33 36 38 39

Приложения:

archery: def calcAPSum(n): # основанно на сумме арифметического ряда
return n * (n - 1) // 2
archery: # is_right направление вращения спирали True - право, False - лево
def generateMatrix1(n, m, is_right = True):
(c1, c2) = (2, 1) if is_right else (1, 2)

a = [[0] * m for i in range(n)]
for i in range(0, n):
for j in range(0, m):
a[i][j] = calcAPSum(i + j) + c2 * j + c1 * i - calcAPSum(max(0, j + i - n + c2)) - calcAPSum(max(0, j + i - m + c1))

for row in a:
print(*row)

return a

n, m = map(int, input().split())
generateMatrix1(n, m, True)
Meir63: спасибо за ответ!

Ответы

Автор ответа: archery
0

Ответ:

Объяснение:

def printMatrix(a):

   for row in a:

       s = ""

       for item in row:

           s += f"{item:3d}"

       print(s)

   print()

def calcAPSum(n): # основанно на сумме арифметического ряда

   return n * (n - 1) // 2

# is_right направление вращения спирали True - право, False - лево

def generateMatrix1(n, m, is_right = True):

   (c1, c2) = (2, 1) if is_right else (1, 2)

   a = [[0] * m for i in range(n)]

   for i in range(0, n):

       for j in range(0, m):

           a[i][j] = calcAPSum(i + j) + c2 * j + c1 * i - calcAPSum(max(0, j + i - n + c2)) - calcAPSum(max(0, j + i - m + c1))

   printMatrix(a)

   return a

n, m = 10, 4

generateMatrix1(n, m, True)


archery: спасибо
Похожие вопросы
Предмет: Алгебра, автор: arinaporvina36
Предмет: Английский язык, автор: foxtrot542