# Find the product of sum of two diagonals of a square Matrix

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;` `}` |

## 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` |

## 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 ` |

## 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` |

## Javascript

`<script>` `// Javascript program to find the product` `// of the sum of diagonals.` `// Function to find the product` `// of the sum of diagonals.` `function` `product(mat, n)` `{` ` ` `// Initialize sums of diagonals` ` ` `let d1 = 0, d2 = 0;` ` ` `for` `(let i = 0; i < n; i++)` ` ` `{` ` ` `d1 += mat[i][i];` ` ` `d2 += mat[i][n - i - 1];` ` ` `}` ` ` ` ` `// Return the answer` ` ` `return` `d1 * d2;` `}` `// Driven code` ` ` `let mat = [[ 5, 8, 1],` ` ` `[ 5, 10, 3],` ` ` `[ -6, 17, -9]];` ` ` ` ` `let n = mat.length;` ` ` ` ` `// Function call` ` ` `document.write(product(mat, n));` `// This code is contributed by rishavmahato348.` `</script>` |

**Output:**

30

**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**.