Given a matrix and the task is to check matrix is involutory matrix or not.
Involutory Matrix: A matrix is said to be involutory matrix if matrix multiply by itself return the identity matrix. Involutory matrix is the matrix that is its own inverse. The matrix A is said to be involutory matrix if A * A = I. Where I is the identity matrix.

Examples:
Input : mat[N][N] = {{1, 0, 0},
{0, -1, 0},
{0, 0, -1}}
Output : Involutory Matrix
Input : mat[N][N] = {{1, 0, 0},
{0, 1, 0},
{0, 0, 1}}
Output : Involutory Matrix
C++
// Program to implement involutory matrix. #include <bits/stdc++.h> #define N 3 using namespace std; // Function for matrix multiplication. void multiply(int mat[][N], int res[][N]) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { res[i][j] = 0; for (int k = 0; k < N; k++) res[i][j] += mat[i][k] * mat[k][j]; } } } // Function to check involutory matrix. bool InvolutoryMatrix(int mat[N][N]) { int res[N][N]; // multiply function call. multiply(mat, res); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j && res[i][j] != 1) return false; if (i != j && res[i][j] != 0) return false; } } return true; } // Driver function. int main() { int mat[N][N] = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } }; // Function call. If function return // true then if part will execute otherwise // else part will execute. if (InvolutoryMatrix(mat)) cout << "Involutory Matrix"; else cout << "Not Involutory Matrix"; return 0; } |
Java
// Java Program to implement // involutory matrix. import java.io.*; class GFG { static int N = 3; // Function for matrix multiplication. static void multiply(int mat[][], int res[][]) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { res[i][j] = 0; for (int k = 0; k < N; k++) res[i][j] += mat[i][k] * mat[k][j]; } } } // Function to check involutory matrix. static boolean InvolutoryMatrix(int mat[][]) { int res[][] = new int[N][N]; // multiply function call. multiply(mat, res); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j && res[i][j] != 1) return false; if (i != j && res[i][j] != 0) return false; } } return true; } // Driver function. public static void main (String[] args) { int mat[][] = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } }; // Function call. If function return // true then if part will execute // otherwise else part will execute. if (InvolutoryMatrix(mat)) System.out.println ( "Involutory Matrix"); else System.out.println ( "Not Involutory Matrix"); } } // This code is contributed by vt_m |
Python3
# Program to implement involutory matrix. N = 3; # Function for matrix multiplication. def multiply(mat, res): for i in range(N): for j in range(N): res[i][j] = 0; for k in range(N): res[i][j] += mat[i][k] * mat[k][j]; return res; # Function to check involutory matrix. def InvolutoryMatrix(mat): res=[[0 for i in range(N)] for j in range(N)]; # multiply function call. res = multiply(mat, res); for i in range(N): for j in range(N): if (i == j and res[i][j] != 1): return False; if (i != j and res[i][j] != 0): return False; return True; # Driver Code mat = [[1, 0, 0], [0, -1, 0], [0, 0, -1]]; # Function call. If function # return true then if part # will execute otherwise # else part will execute. if (InvolutoryMatrix(mat)): print("Involutory Matrix"); else: print("Not Involutory Matrix"); # This code is contributed by mits |
C#
// C# Program to implement // involutory matrix. using System; class GFG { static int N = 3; // Function for matrix multiplication. static void multiply(int [,]mat, int [,]res) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { res[i,j] = 0; for (int k = 0; k < N; k++) res[i,j] += mat[i,k] * mat[k,j]; } } } // Function to check involutory matrix. static bool InvolutoryMatrix(int [,]mat) { int [,]res = new int[N,N]; // multiply function call. multiply(mat, res); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j && res[i,j] != 1) return false; if (i != j && res[i,j] != 0) return false; } } return true; } // Driver function. public static void Main () { int [,]mat = { { 1, 0, 0 }, { 0, -1, 0 }, { 0, 0, -1 } }; // Function call. If function return // true then if part will execute // otherwise else part will execute. if (InvolutoryMatrix(mat)) Console.WriteLine( "Involutory Matrix"); else Console.WriteLine( "Not Involutory Matrix"); } } // This code is contributed by vt_m |
PHP
<?php // Program to implement // involutory matrix. $N = 3; // Function for matrix // multiplication. function multiply($mat, $res) { global $N; for ($i = 0; $i < $N; $i++) { for ($j = 0; $j < $N; $j++) { $res[$i][$j] = 0; for ($k = 0; $k < $N; $k++) $res[$i][$j] += $mat[$i][$k] * $mat[$k][$j]; } } return $res; } // Function to check // involutory matrix. function InvolutoryMatrix($mat) { global $N; $res; for ($i = 0; $i < $N; $i++) for ($j = 0; $j < $N; $j++) $res[$i][$j] = 0; // multiply function call. $res = multiply($mat, $res); for ($i = 0; $i < $N; $i++) { for ($j = 0; $j < $N; $j++) { if ($i == $j && $res[$i][$j] != 1) return false; if ($i != $j && $res[$i][$j] != 0) return false; } } return true; } // Driver Code $mat = array(array(1, 0, 0), array(0, -1, 0), array(0, 0, -1)); // Function call. If function // return true then if part // will execute otherwise // else part will execute. if (InvolutoryMatrix($mat)) echo "Involutory Matrix"; else echo "Not Involutory Matrix"; // This code is contributed by mits ?> |
Output :
Involutory Matrix
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

