Вот продукт, который сделает вас Tensor
Большинство людей знают, как перемножать две матрицы. Однако существует и другой вид умножения, известный как тензорное умножение, который работает так, как можно было бы ожидать от умножения матриц. Пусть A — матрица размером p×q, а B — матрица размером n×m, при этом ни A, ни B не являются матрицей 1×1. Тогда тензорное произведение AB — это матрица размером pn×qm, образованная заменой каждого элемента a_ij в A на матрицу (a_ij)·B. Ниже приведены два примера, которые также показывают, что, как и обычное умножение матриц, тензорное умножение не является коммутативным:
Обратите внимание, что нет необходимости, чтобы число столбцов в первой матрице совпадало с числом строк во второй, как это требуется при обычном умножении матриц. Ваша задача — определить количество способов (если они существуют), которыми данная матрица может быть получена в результате тензорного умножения.
Входные данные
Первая строка ввода для каждого тестового случая содержит два положительных целых числа r и c, обозначающих количество строк и столбцов в матрице. Далее следуют r строк, каждая из которых содержит c положительных целых чисел. Значения r и c не превышают 500, каждое значение в матрице не превышает 65,536, и последний тестовый случай заканчивается строкой, содержащей 0 0.
Выходные данные
Для каждого тестового случая выведите количество различных способов, которыми матрица могла бы быть тензорным произведением двух матриц с положительными целыми числами, ни одна из которых не является матрицей 1×1.