Skip to content
Related Articles

Related Articles

Improve Article

Find the element in the matrix generated by given rules

  • Last Updated : 26 Apr, 2021

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: 

  • The basic key is to observe the pattern, first observation is that every row will have an AP after the element at (i, i). The common difference for row number j is pow(2, j – 1).
  • Now we need to find the first term of each row to find any element (R, C). If we consider only starting elements in each row (i.e element at diagonal), we can observe it is equal to (R + 1) * pow(2, R – 2) for every row R from 2 to N.
  • So, If R > C then the element is 0 else C – R is the position of the required element in AP which is present in the Rth row for which we already know the starting term and the common difference. So, we can find the element as start + d * (C – R).

Below is the implementation of the above approach: 
 



C++




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




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




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




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

Javascript




<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

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :