Автор Vash the Stampede задал вопрос в разделе Другие языки и технологии
Возведение матрицы в степень (asm) и получил лучший ответ
Ответ от ?????? Зелёный змий ??????[гуру]
На asm будут километры, поэтому на С++
class M
{
public:
M& operator=(M &a)
{
// this = a;
return *this;
}
};
M operator *(M a, M b)
{
M Ret;
// Ret = a * b;
return Ret;
}
M E;
M Power(M A, int n)
{
if (n == 0)
{
return E;
}
if (n & 1)
{
return A * Power(A, n-1);
}
M Ret = Power(A, n/2);
return Ret * Ret;
}
Вот и весь алгоритм. Но кроме Power дополнительно понадобится оператор копирования матрицы и оператор умножения одной матрицы на другую. Сама Power будет простой - проверять n, и в зависимости от результата делать call нужного оператора с нужными параметрами.