Given a square matrix **mat** consisting of integers of size **NxN**, the task is to calculate the product between the sums of its diagonal.

**Examples:**

Input:mat[][] = {{5, 8, 1}, {5, 10, 3}, {-6, 17, -9}}Output:30 Sum of primary diagonal = 5 + 10 + (-9) = 6. Sum of secondary diagonal = 1 + 10 + (-6) = 5. Product = 6 * 5 = 30.Input:mat[][] = {{22, -8, 11}, {55, 87, -1}, {-61, 69, 19}}Output:4736

**Naive approach:** Traverse the entire matrix and find the diagonal elements. Calculate the sums across the two diagonals of a square matrix. Then, just take the product of the two sums obtained.

**Time complexity:** O(N^{2})

**Naive approach:** Traverse just the diagonal elements instead of the entire matrix by observing the pattern in the indices of the diagonal elements.

Below is the implementation of this approach:

## CPP

`// C++ program to find the product ` `// of the sum of diagonals. ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find the product ` `// of the sum of diagonals. ` `long` `long` `product(vector<vector<` `int` `>> &mat, ` `int` `n) ` `{ ` ` ` `// Initialize sums of diagonals ` ` ` `long` `long` `d1 = 0, d2 = 0; ` ` ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `{ ` ` ` `d1 += mat[i][i]; ` ` ` `d2 += mat[i][n - i - 1]; ` ` ` `} ` ` ` ` ` `// Return the answer ` ` ` `return` `1LL * d1 * d2; ` `} ` ` ` `// Driven code ` `int` `main() ` `{ ` ` ` `vector<vector<` `int` `>> mat = {{ 5, 8, 1}, ` ` ` `{ 5, 10, 3}, ` ` ` `{ -6, 17, -9}}; ` ` ` ` ` `int` `n = mat.size(); ` ` ` ` ` `// Function call ` ` ` `cout << product(mat, n); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to find the product ` `// of the sum of diagonals. ` ` ` ` ` `class` `GFG{ ` ` ` `// Function to find the product ` `// of the sum of diagonals. ` `static` `long` `product(` `int` `[][]mat, ` `int` `n) ` `{ ` ` ` `// Initialize sums of diagonals ` ` ` `long` `d1 = ` `0` `, d2 = ` `0` `; ` ` ` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++) ` ` ` `{ ` ` ` `d1 += mat[i][i]; ` ` ` `d2 += mat[i][n - i - ` `1` `]; ` ` ` `} ` ` ` ` ` `// Return the answer ` ` ` `return` `1L * d1 * d2; ` `} ` ` ` `// Driven code ` `public` `static` `void` `main(String[] args) ` `{ ` ` ` `int` `[][]mat = {{ ` `5` `, ` `8` `, ` `1` `}, ` ` ` `{ ` `5` `, ` `10` `, ` `3` `}, ` ` ` `{ -` `6` `, ` `17` `, -` `9` `}}; ` ` ` ` ` `int` `n = mat.length; ` ` ` ` ` `// Function call ` ` ` `System.out.print(product(mat, n)); ` ` ` `} ` `} ` ` ` `// This code is contributed by 29AjayKumar ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program to find the product ` `# of the sum of diagonals. ` ` ` `# Function to find the product ` `# of the sum of diagonals. ` `def` `product(mat,n): ` ` ` ` ` `# Initialize sums of diagonals ` ` ` `d1 ` `=` `0` ` ` `d2 ` `=` `0` ` ` ` ` `for` `i ` `in` `range` `(n): ` ` ` ` ` `d1 ` `+` `=` `mat[i][i] ` ` ` `d2 ` `+` `=` `mat[i][n ` `-` `i ` `-` `1` `] ` ` ` ` ` `# Return the answer ` ` ` `return` `d1 ` `*` `d2 ` ` ` ` ` `# Driven code ` `if` `__name__ ` `=` `=` `'__main__'` `: ` ` ` `mat ` `=` `[[` `5` `, ` `8` `, ` `1` `], ` ` ` `[` `5` `, ` `10` `, ` `3` `], ` ` ` `[` `-` `6` `, ` `17` `, ` `-` `9` `]] ` ` ` ` ` `n ` `=` `len` `(mat) ` ` ` ` ` `# Function call ` ` ` `print` `(product(mat, n)) ` ` ` `# This code is contributed by mohit kumar 29 ` |

*chevron_right*

*filter_none*

## C#

`// C# program to find the product ` `// of the sum of diagonals. ` `using` `System; ` ` ` `class` `GFG{ ` ` ` `// Function to find the product ` `// of the sum of diagonals. ` `static` `long` `product(` `int` `[,]mat, ` `int` `n) ` `{ ` ` ` `// Initialize sums of diagonals ` ` ` `long` `d1 = 0, d2 = 0; ` ` ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `{ ` ` ` `d1 += mat[i, i]; ` ` ` `d2 += mat[i, n - i - 1]; ` ` ` `} ` ` ` ` ` `// Return the answer ` ` ` `return` `1L * d1 * d2; ` `} ` ` ` `// Driven code ` `public` `static` `void` `Main(String[] args) ` `{ ` ` ` `int` `[,]mat = {{ 5, 8, 1}, ` ` ` `{ 5, 10, 3}, ` ` ` `{ -6, 17, -9}}; ` ` ` ` ` `int` `n = mat.GetLength(0); ` ` ` ` ` `// Function call ` ` ` `Console.Write(product(mat, n)); ` `} ` `} ` ` ` `// This code is contributed by Princi Singh ` |

*chevron_right*

*filter_none*

**Output:**

30

**Time complexity:** O(N)

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.