# 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. First row is an AP series starting with 1 and d = 1 (Common Difference).
2. For all the element 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: 3

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Basic Key is to observe the pattern, first observation is that every row will have an AP after the element at (i, i). 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 element is 0 else C – R is the position of 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 element as start + d * (C – R).

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `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 `

Output:

```12
```

My Personal Notes arrow_drop_up

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.