# Sum of matrix in which each element is absolute difference of its row and column numbers

Given a positive integer n. Consider a matrix of n rows and n columns, in which each element contain absolute difference of its row number and numbers. The task is to calculate sum of each element of the matrix.

Examples :

```Input : n = 2
Output : 2
Matrix formed with n = 2 with given constraint:
0 1
1 0
Sum of matrix = 2.

Input : n = 3
Output : 8
Matrix formed with n = 3 with given constraint:
0 1 2
1 0 1
2 1 0
Sum of matrix = 8.
```

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

Method 1 (Brute Force):
Simply construct a matrix of n rows and n columns and initialize each cell with absolute difference of its corresponding row number and column number. Now, find the sum of each cell.

Below is the implementation of above idea :

## C++

 `// C++ program to find sum of matrix in which each ` `// element is absolute difference of its corresponding ` `// row and column number row. ` `#include ` `using` `namespace` `std; ` ` `  `// Retuen the sum of matrix in which each element ` `// is absolute difference of its corresponding row ` `// and column number row ` `int` `findSum(``int` `n) ` `{ ` `    ``// Generate matrix ` `    ``int` `arr[n][n]; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``for` `(``int` `j = 0; j < n; j++) ` `            ``arr[i][j] = ``abs``(i - j); ` ` `  `    ``// Compute sum ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``for` `(``int` `j = 0; j < n; j++) ` `            ``sum += arr[i][j]; ` ` `  `    ``return` `sum; ` `} ` ` `  `// Driven Program ` `int` `main() ` `{ ` `    ``int` `n = 3; ` `    ``cout << findSum(n) << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java program to find sum of matrix ` `// in which each element is absolute ` `// difference of its corresponding ` `// row and column number row. ` `import` `java.io.*; ` ` `  `public` `class` `GFG { ` ` `  `// Retuen the sum of matrix in which ` `// each element is absolute difference ` `// of its corresponding row and column ` `// number row ` `static` `int` `findSum(``int` `n) ` `{ ` `     `  `    ``// Generate matrix ` `    ``int` `[][]arr = ``new` `int``[n][n]; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``for` `(``int` `j = ``0``; j < n; j++) ` `            ``arr[i][j] = Math.abs(i - j); ` ` `  `    ``// Compute sum ` `    ``int` `sum = ``0``; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``for` `(``int` `j = ``0``; j < n; j++) ` `            ``sum += arr[i][j]; ` ` `  `    ``return` `sum; ` `} ` ` `  `    ``// Driver Code ` `    ``static` `public` `void` `main (String[] args) ` `    ``{ ` `        ``int` `n = ``3``; ` `        ``System.out.println(findSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## Python3

 `# Python3 program to find sum of matrix  ` `# in which each element is absolute  ` `# difference of its corresponding ` `# row and column number row. ` ` `  `# Return the sum of matrix in which each  ` `# element is absolute difference of its  ` `# corresponding row and column number row ` `def` `findSum(n): ` ` `  `    ``# Generate matrix ` `    ``arr ``=` `[[``0` `for` `x ``in` `range``(n)] ` `              ``for` `y ``in` `range` `(n)] ` `    ``for` `i ``in` `range` `(n): ` `        ``for` `j ``in` `range` `(n): ` `            ``arr[i][j] ``=` `abs``(i ``-` `j) ` ` `  `    ``# Compute sum ` `    ``sum` `=` `0` `    ``for` `i ``in` `range` `(n): ` `        ``for` `j ``in` `range``(n): ` `            ``sum` `+``=` `arr[i][j] ` ` `  `    ``return` `sum` ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` ` `  `    ``n ``=` `3` `    ``print` `(findSum(n)) ` `     `  `# This code is contributed by ita_c `

## C#

 `// C# program to find sum of matrix ` `// in which each element is absolute ` `// difference of its corresponding ` `// row and column number row. ` `using` `System; ` ` `  `public` `class` `GFG { ` ` `  `// Retuen the sum of matrix in which ` `// each element is absolute difference ` `// of its corresponding row and column ` `// number row ` `static` `int` `findSum(``int` `n) ` `{ ` `     `  `// Generate matrix ` `    ``int` `[,]arr = ``new` `int``[n, n]; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``for` `(``int` `j = 0; j < n; j++) ` `            ``arr[i,j ] = Math.Abs(i - j); ` `  `  `    ``// Compute sum ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``for` `(``int` `j = 0; j < n; j++) ` `            ``sum += arr[i, j]; ` `  `  `    ``return` `sum; ` `} ` ` `  `    ``// Driver Code ` `    ``static` `public` `void` `Main(String[] args) ` `    ``{ ` `        ``int` `n = 3; ` `        ``Console.WriteLine(findSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 ` `

Output:

```8
```

Method 2 (O(n)):
Consider n = 3, matrix formed will be:
0 1 2
1 0 1
2 1 0

Observe, the main diagonal is always 0 since all i are equal to j. The diagonal just above and just below will always be 1 because at each cell either i is 1 greater than j or j is 1 greater than i and so on.
Following the pattern we can see that the total sum of all the elements in the matrix will be, for each i from 0 to n, add i*(n-i)*2.
Below is the implementation of above idea :

## C++

 `// C++ program to find sum of matrix in which ` `// each element is absolute difference of its ` `// corresponding row and column number row. ` `#include ` `using` `namespace` `std; ` ` `  `// Retuen the sum of matrix in which each ` `// element is absolute difference of its ` `// corresponding row and column number row ` `int` `findSum(``int` `n) ` `{ ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``sum += i*(n-i); ` `    ``return` `2*sum; ` `} ` ` `  `// Driven Program ` `int` `main() ` `{ ` `    ``int` `n = 3; ` `    ``cout << findSum(n) << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java program to find sum of matrix in which ` `// each element is absolute difference of its ` `// corresponding row and column number row. ` `import` `java.io.*; ` ` `  `class` `GFG { ` ` `  `// Retuen the sum of matrix in which each ` `// element is absolute difference of its ` `// corresponding row and column number row ` `static` `int` `findSum(``int` `n) ` `{ ` `    ``int` `sum = ``0``; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``sum += i * (n - i); ` `    ``return` `2` `* sum; ` `} ` ` `  `    ``// Driver Code ` `    ``static` `public` `void` `main(String[] args) ` `    ``{ ` `        ``int` `n = ``3``; ` `        ``System.out.println(findSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## C#

 `// C# program to find sum of matrix in which ` `// each element is absolute difference of its ` `// corresponding row and column number row. ` `using` `System; ` ` `  `class` `GFG { ` ` `  `// Retuen the sum of matrix in which each ` `// element is absolute difference of its ` `// corresponding row and column number row ` `static` `int` `findSum(``int` `n) ` `{ ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``sum += i * (n - i); ` `    ``return` `2 * sum; ` `} ` ` `  `    ``// Driver Code ` `    ``static` `public` `void` `Main(String[] args) ` `    ``{ ` `        ``int` `n = 3; ` `        ``Console.WriteLine(findSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## Python3

 `# Python 3 program to find sum  ` `# of matrix in which each element  ` `# is absolute difference of its  ` `# corresponding row and column  ` `# number row.  ` ` `  `# Return the sum of matrix in  ` `# which each element is absolute  ` `# difference of its corresponding ` `# row and column number row  ` `def` `findSum(n): ` `    ``sum` `=` `0` `    ``for` `i ``in` `range``(n): ` `        ``sum` `+``=` `i ``*` `(n ``-` `i) ` `    ``return` `2` `*` `sum` ` `  `# Driver code ` `n ``=` `3` `print``(findSum(n)) ` ` `  `# This code is contributed by Shrikant13 `

## PHP

 ` `

Output:

```8
```

Method 3 (Trick):
Consider n = 3, matrix formed will be:
0 1 2
1 0 1
2 1 0

So, sum = 1 + 1 + 1 + 1 + 2 + 2.
On Rearranging, 1 + 2 + 1 + 2 + 2 = 1 + 2 + 1 + 22.
So, in every case we can rearrange the sum of matrix so that the answer always will be sum of first n – 1 natural number and sum of square of first n – 1 natural number.

```Sum of first n natural number = ((n)*(n + 1))/2.
Sum of first n natural number = ((n)*(n + 1)*(2*n + 1)/6.
```

Below is the implementation of above idea :

## C++

 `// C++ program to find sum of matrix in which ` `// each element is absolute difference of its ` `// corresponding row and column number row. ` `#include ` `using` `namespace` `std; ` ` `  `// Retuen the sum of matrix in which each element ` `// is absolute difference of its corresponding ` `// row and column number row ` `int` `findSum(``int` `n) ` `{ ` `    ``n--; ` `    ``int` `sum = 0; ` `    ``sum += (n*(n+1))/2; ` `    ``sum += (n*(n+1)*(2*n + 1))/6; ` `    ``return` `sum; ` `} ` ` `  `// Driven Program ` `int` `main() ` `{ ` `    ``int` `n = 3; ` `    ``cout << findSum(n) << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java program to find sum of matrix in which ` `// each element is absolute difference of its ` `// corresponding row and column number row. ` `import` `java.io.*; ` ` `  `public` `class` `GFG { ` `     `  `// Retuen the sum of matrix in which each element ` `// is absolute difference of its corresponding ` `// row and column number row ` `static` `int` `findSum(``int` `n) ` `{ ` `    ``n--; ` `    ``int` `sum = ``0``; ` `    ``sum += (n * (n + ``1``)) / ``2``; ` `    ``sum += (n * (n + ``1``) * (``2` `* n + ``1``)) / ``6``; ` `    ``return` `sum; ` `} ` ` `  `    ``// Driver Code ` `    ``static` `public` `void` `main (String[] args) ` `    ``{ ` `        ``int` `n = ``3``; ` `        ``System.out.println(findSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## Python3

 `# Python 3 program to find sum of matrix  ` `# in which each element is absolute  ` `# difference of its corresponding row  ` `# and column number row.  ` ` `  `# Return the sum of matrix in which  ` `# each element is absolute difference  ` `# of its corresponding row and column  ` `# number row  ` `def` `findSum(n): ` `    ``n ``-``=` `1` `    ``sum` `=` `0` `    ``sum` `+``=` `(n ``*` `(n ``+` `1``)) ``/` `2` `    ``sum` `+``=` `(n ``*` `(n ``+` `1``) ``*` `(``2` `*` `n ``+` `1``)) ``/` `6` `    ``return` `int``(``sum``)  ` ` `  `# Driver Code ` `n ``=` `3` `print``(findSum(n))  ` ` `  `# This code contributed by Rajput-Ji `

## C#

 `// C# program to find sum of matrix in which ` `// each element is absolute difference of its ` `// corresponding row and column number row. ` `using` `System; ` ` `  `public` `class` `GFG { ` `     `  `// Retuen the sum of matrix in which each element ` `// is absolute difference of its corresponding ` `// row and column number row ` `static` `int` `findSum(``int` `n) ` `{ ` `    ``n--; ` `    ``int` `sum = 0; ` `    ``sum += (n * (n + 1)) / 2; ` `    ``sum += (n * (n + 1) * (2 * n + 1)) / 6; ` `    ``return` `sum; ` `} ` ` `  `    ``// Driver Code ` `    ``static` `public` `void` `Main(String[] args) ` `    ``{ ` `        ``int` `n = 3; ` `        ``Console.WriteLine(findSum(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 ` `

Output :

```8
```

Matrix Matrix