Find the element at R’th row and C’th column in given a 2D pattern

Given two integers R and C, the task is to find the element at the Rth row and Cth column.

Pattern:

  • First Element of ith row =\frac{i*(i-1)}{2} + 1
  • Every element is a Arthmetic progression increasing difference where common difference is 1.
  • Intial Difference Term = i + 1

Examples:

Input: R = 4, C = 4
Output: 25
Explanation:
Pattern of size 4 * 4 is –
1 3 6 10
2 5 9 14
4 8 13 19
7 12 18 25
Therefore, Element at Pat[4][4] = 25

Input: R = 3, C = 3
Output: 13
Explanation:
Pattern of size 3 * 3 is –
1 3 6
2 5 9
4 8 13
Therefore, element at Pat[3][3] = 13



Naive Approach: A simple solution is to generate the pattern matrix of size R * C and then finally return the element at the Rth row and Cth column.

Time Complexity: O(R*C)
Auxiliary Space: O(R*C)

Efficient Approach: The idea is to find the first term of the Rth row using the formulae \frac{R*(R+1)}{2} and then finally compute the Cth term of that column using the help of loop.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to compute the
// R'th row and C'th column of the
// given pattern
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to compute the
// R'th row and C'th column of the
// given pattern
int findValue(int R, int C)
{
  
    // First element of a given row
    int k = (R * (R - 1)) / 2 + 1;
  
    int diff = R + 1;
  
    // Element in the given column
    for (int i = 1; i < C; i++) {
        k = (k + diff);
        diff++;
    }
  
    return k;
}
  
// Driver Code
int main()
{
    int R = 4;
    int C = 4;
  
    // Function call
    int k = findValue(R, C);
  
    cout << k;
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to compute the 
// R'th row and C'th column of the 
// given pattern 
import java.io.*; 
  
class GFG{ 
      
// Function to compute the R'th 
// row and C'th column of the
// given pattern
static int findValue(int R, int C)
{
  
    // First element of a given row
    int k = (R * (R - 1)) / 2 + 1;
  
    int diff = R + 1;
  
    // Element in the given column
    for(int i = 1; i < C; i++)
    {
       k = (k + diff);
       diff++;
    }
    return k;
}
  
// Driver code 
public static void main (String[] args) 
    int R = 4;
    int C = 4;
  
    // Function call
    int k = findValue(R, C);
  
    System.out.println(k); 
  
// This code is contributed by mohit kumar 29 

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation to find the 
# R'th row and C'th column value in 
# the given pattern
  
# Function to find the 
# R'th row and C'th column value in 
# the given pattern
def findValue(R, C):
  
    # First element of a given row
    k = (R*(R-1))//2 + 1
  
    diff = R + 1
  
    # Element in the given column
    for i in range(1, C):
        k = (k + diff)
        diff+= 1
  
    return k
  
# Driver Code
if __name__ == "__main__":
    R = 4
    C = 4
      
    k = findValue(R, C)
    print(k)

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation to compute the 
// R'th row and C'th column of the 
// given pattern 
using System;
class GFG{ 
      
// Function to compute the R'th 
// row and C'th column of the
// given pattern
static int findValue(int R, int C)
{
  
    // First element of a given row
    int k = (R * (R - 1)) / 2 + 1;
  
    int diff = R + 1;
  
    // Element in the given column
    for(int i = 1; i < C; i++)
    {
        k = (k + diff);
        diff++;
    }
    return k;
}
  
// Driver code 
public static void Main() 
    int R = 4;
    int C = 4;
  
    // Function call
    int k = findValue(R, C);
  
    Console.Write(k); 
  
// This code is contributed by Code_Mech

chevron_right


Output:

25

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.




My Personal Notes arrow_drop_up

Recommended Posts:


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.