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
// 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)
Auxiliary Space: O(1) because using constant variables