using
System;
class
GFG {
static
int
N = 3;
static
int
findTrace(
int
[, ] mat,
int
n)
{
int
sum = 0;
for
(
int
i = 0; i < n; i++)
sum += mat[i, i];
return
sum;
}
static
int
sum_of_minors(
int
[, ] mat,
int
n)
{
return
(
(mat[2, 2] * mat[1, 1] - mat[2, 1] * mat[1, 2])
+ (mat[2, 2] * mat[0, 0]
- mat[2, 0] * mat[0, 2])
+ (mat[1, 1] * mat[0, 0]
- mat[1, 0] * mat[0, 1]));
}
static
void
getCofactor(
int
[, ] mat,
int
[, ] temp,
int
p,
int
q,
int
n)
{
int
i = 0, j = 0;
for
(
int
row = 0; row < n; row++) {
for
(
int
col = 0; col < n; col++) {
if
(row != p && col != q) {
temp[i, j++] = mat[row, col];
if
(j == n - 1) {
j = 0;
i++;
}
}
}
}
}
static
int
determinantOfMatrix(
int
[, ] mat,
int
n)
{
int
D = 0;
if
(n == 1)
return
mat[0, 0];
int
[, ] temp =
new
int
[N, N];
int
sign = 1;
for
(
int
f = 0; f < n; f++) {
getCofactor(mat, temp, 0, f, n);
D += sign * mat[0, f]
* determinantOfMatrix(temp, n - 1);
sign = -sign;
}
return
D;
}
public
static
void
Main()
{
int
[, ] mat
= { { 0, 1, 2 }, { 1, 0, -1 }, { 2, -1, 0 } };
int
trace = findTrace(mat, 3);
int
s_o_m = sum_of_minors(mat, 3);
int
det = determinantOfMatrix(mat, 3);
Console.Write(
"x^3"
);
if
(trace != 0) {
if
(trace < 0)
Console.Write(
" + "
+ trace * -1 +
"x^2"
);
else
Console.Write(
" - "
+ trace +
"x^2"
);
}
if
(s_o_m != 0) {
if
(s_o_m < 0)
Console.Write(
" - "
+ s_o_m * -1 +
"x"
);
else
Console.Write(
" + "
+ s_o_m +
"x"
);
}
if
(det != 0) {
if
(det < 0)
Console.Write(
" + "
+ det * -1);
else
Console.Write(
" - "
+ det);
}
}
}