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(N2)

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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


Output:

30

Time complexity: O(N)

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.