Ввести квадратную целочисленную матрицу построчно и посчитать её определитель (например, методом конденсации Доджсона). Размер матрицы (1<N<14) определяется длиной её нулевой строки. Описание предлагаемого метода в подсказках. Пользоваться numpy нельзя:)
Сам метод хорошо описан в Википедии. Приведём слегка модифицированный вариант. Будем строить матрицу размера из матрицы размера таким образом, что каждый её элемент равен определителю минора второго порядка строк и и столбцов и матрицы , т. е.
Согласно алгоритму Доджсона, элементы матрицы надо поделить на соответствующие внутренние элементы матрицы . В нашем случае делить надо всегда на , так что можно посчитать определитель , а потом уже поделить на . Таким образом, на каждом шаге конденсации мы накапливаем общий делитель , а на последнем шаге (когда размерность матрицы становится ) делим на .
Кроме того, исходный алгоритм Доджсона предписывает переставлять строки, если какой-то внешний элемент оказался нулевым. В нашем варианте алгоритма достаточно поддерживать , то есть переставлять в матрице строки до тех пор, пока угловой элемент не окажется ненулевым (если таких нет, определитель 0). Не забываем о знаке определителя при перестановке строк (иногда его надо менять)!
8, 8, 5, 6, 3 1, 4, 4, 9, 0 9, 6, 7, 7, 3 4, 1, 0, 1, 4 6, 7, 9, 7, 3
2784
Для проверки правильности можно воспользоваться модулем numpy (предположим, матрица Array хранится в виде списка списков):
1 import numpy
2 print(numpy.linalg.det(numpy.array(Array)))
Да, с модулями в Ptyhon жизнь становится намного проще . Но наша цель — учёба, а не лёгкая жизнь.