Related Articles

# Program to find the Product of diagonal elements of a matrix

• Last Updated : 28 May, 2021

Given an N * N matrix, the task is to find the product of the elements of left and right diagonal.
Examples:

```Input: arr[] = 1 2 3 4
5 6 7 8
9 7 4 2
2 2 2 1
Output: 9408
Explanation:
Product of left diagonal = 1 * 4 * 6 * 1 = 24
Product of right diagonal = 4 * 7 * 7 * 2 = 392
Total product = 24 * 392 = 9408

Input: arr[] = 2 1 2 1 2
1 2 1 2 1
2 1 2 1 2
1 2 1 2 1
2 1 2 1 2
Output : 512
Explanation:
Product of left diagonal = 2 * 2 * 2 * 2 * 2 = 32
Product of right diagonal = 2 * 2 * 2 * 2 * 2 = 32
But we have a common element in this case so
Total product = (32 * 32)/2  = 512```

Approach:

• We need to find out the principal diagonal and secondary diagonal elements of the matrix. Please refer to this article for this [ Program to print the Diagonals of a Matrix

• In this method, we use one loop i.e. a loop for calculating product of both the principal and secondary diagonals
• Divide the answer by middle element for matrix of odd size

Below is the implementation of the above approach:

## CPP

 `// C++ Program to find the Product``// of diagonal elements of a matrix` `#include ``using` `namespace` `std;` `// Function to find the product of diagonals``int` `productDiagonals(``int` `arr[], ``int` `n)``{` `    ``int` `product = 1;``    ``// loop for calculating product of both``    ``// the principal and secondary diagonals``    ``for` `(``int` `i = 0; i < n; i++) {` `        ``// For principal diagonal index of row``        ``// is equal to index of column``        ``product = product * arr[i][i];` `        ``// For secondary diagonal index``        ``// of column is n-(index of row)-1``        ``product = product * arr[i][n - i - 1];``    ``}` `    ``// Divide the answer by middle element for``    ``// matrix of odd size``    ``if` `(n % 2 == 1) {``        ``product = product / arr[n / 2][n / 2];``    ``}` `    ``return` `product;``}` `// Driver code``int` `main()``{``    ``int` `arr1 = { { 1, 2, 3, 4 },``                           ``{ 5, 6, 7, 8 },``                           ``{ 9, 7, 4, 2 },``                           ``{ 2, 2, 2, 1 } };``    ``// Function calling``    ``cout << productDiagonals(arr1, 4) << endl;` `    ``int` `arr2 = { { 2, 1, 2, 1, 2 },``                           ``{ 1, 2, 1, 2, 1 },``                           ``{ 2, 1, 2, 1, 2 },``                           ``{ 1, 2, 1, 2, 1 },``                           ``{ 2, 1, 2, 1, 2 } };``    ``// Function calling``    ``cout << productDiagonals(arr2, 5) << endl;``    ``return` `0;``}`

## Java

 `// Java Program to find the Product``// of diagonal elements of a matrix``import` `java.util.*;` `class` `GFG``{` `// Function to find the product of diagonals``static` `int` `productDiagonals(``int` `arr[][], ``int` `n)``{` `    ``int` `product = ``1``;``    ``// loop for calculating product of both``    ``// the principal and secondary diagonals``    ``for` `(``int` `i = ``0``; i < n; i++)``    ``{` `        ``// For principal diagonal index of row``        ``// is equal to index of column``        ``product = product * arr[i][i];` `        ``// For secondary diagonal index``        ``// of column is n-(index of row)-1``        ``product = product * arr[i][n - i - ``1``];``    ``}` `    ``// Divide the answer by middle element for``    ``// matrix of odd size``    ``if` `(n % ``2` `== ``1``)``    ``{``        ``product = product / arr[n / ``2``][n / ``2``];``    ``}` `    ``return` `product;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `arr1[][] = { { ``1``, ``2``, ``3``, ``4` `},``                        ``{ ``5``, ``6``, ``7``, ``8` `},``                        ``{ ``9``, ``7``, ``4``, ``2` `},``                        ``{ ``2``, ``2``, ``2``, ``1` `} };``    ``// Function calling``    ``System.out.print(productDiagonals(arr1, ``4``) + ``"\n"``);` `    ``int` `arr2[][] = { { ``2``, ``1``, ``2``, ``1``, ``2` `},``                        ``{ ``1``, ``2``, ``1``, ``2``, ``1` `},``                        ``{ ``2``, ``1``, ``2``, ``1``, ``2` `},``                        ``{ ``1``, ``2``, ``1``, ``2``, ``1` `},``                        ``{ ``2``, ``1``, ``2``, ``1``, ``2` `} };``    ``// Function calling``    ``System.out.print(productDiagonals(arr2, ``5``) + ``"\n"``);``}``}` `// This code is contributed by PrinciRaj1992`

## Python3

 `# Python3 Program to find the Product``# of diagonal elements of a matrix` `# Function to find the product of diagonals``def` `productDiagonals(arr, n):` `    ``product ``=` `1``;``    ` `    ``# loop for calculating product of both``    ``# the principal and secondary diagonals``    ``for` `i ``in` `range``(n):` `        ``# For principal diagonal index of row``        ``# is equal to index of column``        ``product ``=` `product ``*` `arr[i][i];` `        ``# For secondary diagonal index``        ``# of column is n-(index of row)-1``        ``product ``=` `product ``*` `arr[i][n ``-` `i ``-` `1``];``    ` `    ``# Divide the answer by middle element for``    ``# matrix of odd size``    ``if` `(n ``%` `2` `=``=` `1``):``        ``product ``=` `product ``/``/` `arr[n ``/``/` `2``][n ``/``/` `2``];` `    ``return` `product;` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``arr1 ``=` `[[ ``1``, ``2``, ``3``, ``4` `],[ ``5``, ``6``, ``7``, ``8` `],``            ``[ ``9``, ``7``, ``4``, ``2` `],[ ``2``, ``2``, ``2``, ``1` `]];` `    ``# Function calling``    ``print``(productDiagonals(arr1, ``4``));` `    ``arr2 ``=` `[[ ``2``, ``1``, ``2``, ``1``, ``2` `],[ ``1``, ``2``, ``1``, ``2``, ``1` `],``            ``[ ``2``, ``1``, ``2``, ``1``, ``2` `],[ ``1``, ``2``, ``1``, ``2``, ``1` `],``            ``[ ``2``, ``1``, ``2``, ``1``, ``2` `]];` `    ``# Function calling``    ``print``(productDiagonals(arr2, ``5``));``    ` `# This code is contributed by 29AjayKumar`

## C#

 `// C# Program to find the Product``// of diagonal elements of a matrix``using` `System;` `class` `GFG``{` `// Function to find the product of diagonals``static` `int` `productDiagonals(``int` `[,]arr, ``int` `n)``{` `    ``int` `product = 1;``    ` `    ``// loop for calculating product of both``    ``// the principal and secondary diagonals``    ``for` `(``int` `i = 0; i < n; i++)``    ``{` `        ``// For principal diagonal index of row``        ``// is equal to index of column``        ``product = product * arr[i,i];` `        ``// For secondary diagonal index``        ``// of column is n-(index of row)-1``        ``product = product * arr[i,n - i - 1];``    ``}` `    ``// Divide the answer by middle element for``    ``// matrix of odd size``    ``if` `(n % 2 == 1)``    ``{``        ``product = product / arr[n / 2,n / 2];``    ``}` `    ``return` `product;``}` `// Driver code``public` `static` `void` `Main(String[] args)``{``    ``int` `[,]arr1 = { { 1, 2, 3, 4 },``                    ``{ 5, 6, 7, 8 },``                    ``{ 9, 7, 4, 2 },``                    ``{ 2, 2, 2, 1 } };``    ` `    ``// Function calling``    ``Console.Write(productDiagonals(arr1, 4) + ``"\n"``);` `    ``int` `[,]arr2 = { { 2, 1, 2, 1, 2 },``                    ``{ 1, 2, 1, 2, 1 },``                    ``{ 2, 1, 2, 1, 2 },``                    ``{ 1, 2, 1, 2, 1 },``                    ``{ 2, 1, 2, 1, 2 } };``    ` `    ``// Function calling``    ``Console.Write(productDiagonals(arr2, 5) + ``"\n"``);``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``
Output:
```9408
512```

Time Complexity: O(N)

Attention reader! Don’t stop learning now. Participate in the Scholorship Test for First-Step-to-DSA Course for Class 9 to 12 students.

My Personal Notes arrow_drop_up