Open In App

Find the element in the matrix generated by given rules

Given some rules to generate an N × N matrix mat[][] and two integers R and C, the task is to find the element at the Rth row and Cth column. The rules are as follows: 

  1. The first row is an AP series starting with 1 and d = 1 (Common Difference).
  2. For all the elements at (i, j) such that i > j, their value is 0.
  3. Rest of the elements follow, Element(i, j) = Element(i – 1, j) + Element(i – 1, j – 1).

Examples: 
 

Input: N = 4, R = 3, C = 4 
Output: 12 
mat[][] = 
{1, 2, 3, 4}, 
{0, 3, 5, 7}, 
{0, 0, 8, 12}, 
{0, 0, 0, 20} 
and the element in the third row and fourth column is 12.
Input: N = 2, R = 2, C = 2 
Output:
 

Approach: 

Below is the implementation of the above approach: 
 




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the element in the rth row
// and cth column from the required matrix
int getElement(int N, int r, int c)
{
 
    // Condition for lower half of matrix
    if (r > c)
        return 0;
 
    // Condition if element is in first row
    if (r == 1) {
        return c;
    }
 
    // Starting element of AP in row r
    int a = (r + 1) * pow(2, r - 2);
 
    // Common difference of AP in row r
    int d = pow(2, r - 1);
 
    // Position of element to find
    // in AP in row r
    c = c - r;
 
    int element = a + d * c;
 
    return element;
}
 
// Driver Code
int main()
{
    int N = 4, R = 3, C = 4;
 
    cout << getElement(N, R, C);
 
    return 0;
}




// Java implementation of the above approach
import java.io.*;
import java.util.*;
 
class GFG
{
     
// Function to return the element
// in the rth row and cth column
// from the required matrix
static int getElement(int N, int r, int c)
{
 
    // Condition for lower half of matrix
    if (r > c)
        return 0;
 
    // Condition if element is in first row
    if (r == 1)
    {
        return c;
    }
 
    // Starting element of AP in row r
    int a = (r + 1) * (int)(Math.pow(2,(r - 2)));
 
    // Common difference of AP in row r
    int d = (int)(Math.pow(2,(r - 1)));
 
    // Position of element to find
    // in AP in row r
    c = c - r;
 
    int element = a + d * c;
 
    return element;
}
 
// Driver Code
public static void main(String[] args)
{
    int N = 4, R = 3, C = 4;
 
    System.out.println(getElement(N, R, C));
}
}
 
// This code is contributed by Krikti




# Python3 implementation of the approach
 
# Function to return the element in the rth row
# and cth column from the required matrix
def getElement(N, r, c) :
 
    # Condition for lower half of matrix
    if (r > c) :
        return 0;
 
    # Condition if element is in first row
    if (r == 1) :
        return c;
     
 
    # Starting element of AP in row r
    a = (r + 1) * pow(2, r - 2);
 
    # Common difference of AP in row r
    d = pow(2, r - 1);
 
    # Position of element to find
    # in AP in row r
    c = c - r;
 
    element = a + d * c;
 
    return element;
 
 
# Driver Code
if __name__ == "__main__" :
 
    N = 4; R = 3; C = 4;
 
    print(getElement(N, R, C));
     
# This Code is contributed by AnkitRai01




// C# implementation of the above approach
using System;
     
class GFG
{
     
// Function to return the element
// in the rth row and cth column
// from the required matrix
static int getElement(int N, int r, int c)
{
 
    // Condition for lower half of matrix
    if (r > c)
        return 0;
 
    // Condition if element is in first row
    if (r == 1)
    {
        return c;
    }
 
    // Starting element of AP in row r
    int a = (r + 1) * (int)(Math.Pow(2,(r - 2)));
 
    // Common difference of AP in row r
    int d = (int)(Math.Pow(2,(r - 1)));
 
    // Position of element to find
    // in AP in row r
    c = c - r;
 
    int element = a + d * c;
 
    return element;
}
 
// Driver Code
public static void Main(String[] args)
{
    int N = 4, R = 3, C = 4;
 
    Console.WriteLine(getElement(N, R, C));
}
}
 
// This code is contributed by Princi Singh




<script>
// Java script implementation of the above approach
     
// Function to return the element
// in the rth row and cth column
// from the required matrix
function getElement( N,  r,  c)
{
 
    // Condition for lower half of matrix
    if (r > c)
        return 0;
 
    // Condition if element is in first row
    if (r == 1)
    {
        return c;
    }
 
    // Starting element of AP in row r
    let a = (r + 1) * parseInt(Math.pow(2,(r - 2)));
 
    // Common difference of AP in row r
    let d = parseInt(Math.pow(2,(r - 1)));
 
    // Position of element to find
    // in AP in row r
    c = c - r;
 
    let element = a + d * c;
 
    return element;
}
 
// Driver Code
    let N = 4, R = 3, C = 4;
 
    document.write(getElement(N, R, C));
 
//contributed by bobby
 
</script>

Output: 
12

 

Time Complexity : O(logr)

Auxiliary Space: O(1)


Article Tags :