Given an integer square matrix of odd dimensions (3 * 3, 5 * 5). The task is to find the product of the middle row & middle column elements.
Examples:
Input: mat[][] =
{{2, 1, 7},
{3, 7, 2},
{5, 4, 9}}
Output: Product of middle row = 42
Product of middle column = 28
Explanation: Product of Middle row elements (3*7*2)
Product of Middle Column elements (1*7*4)
Input: mat[][] =
{ {1, 3, 5, 6, 7},
{3, 5, 3, 2, 1},
{1, 2, 3, 4, 5},
{7, 9, 2, 1, 6},
{9, 1, 5, 3, 2}}
Output: Product of middle row = 120
Product of middle column = 450
Approach:
As the given matrix is of odd dimensions, so the middle row and column will be always at the n/2th. So, Run a loop from i = 0 to N and produce all the elements of the middle row
i.e. row_prod *= mat[n / 2][i]. Similarly, the product of elements of the middle column will be col_prod *= mat[i][n / 2].
Below is the implementation of the above approach:
// C++ program to find product of
// middle row and middle column in matrix
#include <iostream>
using namespace std;
const int MAX = 100;
void middleProduct(int mat[][MAX], int n)
{
// loop for product of row and column
int row_prod = 1, col_prod = 1;
for (int i = 0; i < n; i++) {
row_prod *= mat[n / 2][i];
col_prod *= mat[i][n / 2];
}
// Print result
cout << "Product of middle row = "
<< row_prod << endl;
cout << "Product of middle column = "
<< col_prod;
}
// Driver code
int main()
{
int mat[][MAX] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
middleProduct(mat, 3);
return 0;
}
// C program to find product of
// middle row and middle column in matrix
#include <stdio.h>
#define MAX 100
void middleProduct(int mat[][MAX], int n)
{
// loop for product of row and column
int row_prod = 1, col_prod = 1;
for (int i = 0; i < n; i++) {
row_prod *= mat[n / 2][i];
col_prod *= mat[i][n / 2];
}
// Print result
printf("Product of middle row = %d\n",row_prod);
printf("Product of middle column = %d\n",col_prod);
}
// Driver code
int main()
{
int mat[][MAX] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
middleProduct(mat, 3);
return 0;
}
// This code is contributed by kothavvsaakash.
// Java program to find product of
// middle row and middle column in matrix
import java.io.*;
class GFG {
static int MAX = 100;
static void middleProduct(int mat[][], int n)
{
// loop for product of row and column
int row_prod = 1, col_prod = 1;
for (int i = 0; i < n; i++) {
row_prod *= mat[n / 2][i];
col_prod *= mat[i][n / 2];
}
// Print result
System.out.print("Product of middle row = "
+ row_prod);
System.out.print( "Product of middle column = "
+ col_prod);
}
// Driver code
public static void main (String[] args) {
int mat[][] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
middleProduct(mat, 3);
}
}
// This code is contributed by shs
# Python3 program to find product of
# middle row and middle column in matrix
MAX = 100
def middleProduct(mat, n):
# loop for product of row and column
row_prod = 1
col_prod = 1
for i in range(n) :
row_prod *= mat[n // 2][i]
col_prod *= mat[i][n // 2]
# Print result
print ("Product of middle row = ",
row_prod)
print ("Product of middle column = ",
col_prod)
# Driver code
if __name__ == "__main__":
mat = [[ 2, 1, 7 ],
[ 3, 7, 2 ],
[ 5, 4, 9 ]]
middleProduct(mat, 3)
# This code is contributed by ita_c
// C# program to find product of
// middle row and middle column in matrix
using System;
class GFG {
//static int MAX = 100;
static void middleProduct(int [,]mat, int n)
{
// loop for product of row and column
int row_prod = 1, col_prod = 1;
for (int i = 0; i < n; i++) {
row_prod *= mat[n / 2,i];
col_prod *= mat[i,n / 2];
}
// Print result
Console.WriteLine("Product of middle row = "
+ row_prod);
Console.WriteLine( "Product of middle column = "
+ col_prod);
}
// Driver code
public static void Main () {
int [,]mat = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
middleProduct(mat, 3);
}
}
// This code is contributed by shs
<?php
// PHP program to find product of
// middle row and middle column in matrix
$MAX = 100;
function middleProduct($mat, $n)
{
// loop for product of row and column
$row_prod = 1; $col_prod = 1;
for ($i = 0; $i < $n; $i++)
{
$row_prod *= $mat[$n / 2][$i];
$col_prod *= $mat[$i][$n / 2];
}
// Print result
echo "Product of middle row = " .
$row_prod . "\n";
echo "Product of middle column = " .
$col_prod;
}
// Driver code
$mat= array(array( 2, 1, 7 ),
array( 3, 7, 2 ),
array( 5, 4, 9 ));
middleProduct($mat, 3);
// This code is contributed
// by Akanksha Rai
?>
<script>
// Javascript program to find product of
// middle row and middle column in matrix
let MAX = 100;
function middleProduct(mat,n)
{
// loop for product of row and column
let row_prod = 1, col_prod = 1;
for (let i = 0; i < n; i++) {
row_prod *= mat[(Math.floor(n / 2))][i];
col_prod *= mat[i][(Math.floor(n / 2))];
}
// Print result
document.write("Product of middle row = "
+ row_prod+"<br>");
document.write( "Product of middle column = "
+ col_prod+"<br>");
}
// Driver code
let mat = [[ 2, 1, 7 ],
[ 3, 7, 2 ],
[ 5, 4, 9 ]];
middleProduct(mat, 3);
// This code is contributed by rag2127
</script>
Output
Product of middle row = 42 Product of middle column = 28
Time Complexity: O(n)
Auxiliary Space: O(1), as constant space is used