Sum of matrix element where each elements is integer division of row and column
Consider a N X N matrix where each element is divided by a column number (integer division), i.e. mat[i][j] = floor((i+1)/(j+1)) where 0 <= i < n and 0 <= j < n. The task is to find the sum of all matrix elements.
Examples :
Input : N = 2 Output : 4 2 X 2 matrix with given constraint: 1 0 2 1 Sum of matrix element: 4 Input : N = 3 Output : 9
Method 1 (Brute Force): Run two loops, one for the row and another for the column, and find the integer part of (i / j) and add to the answer.
Below is the implementation of this approach:
C++
// C++ program to find sum of matrix element // where each element is integer division of // row and column. #include<bits/stdc++.h> using namespace std; // Return sum of matrix element where each element // is division of its corresponding row and column. int findSum( int n) { int ans = 0; for ( int i = 1; i <= n; i++) // for rows for ( int j = 1; j <= n; j++) // for columns ans += (i/j); return ans; } // Driven Program int main() { int N = 2; cout << findSum(N) << endl; return 0; } |
Java
// java program to find sum of matrix // element where each element is integer // division of row and column. import java.io.*; class GFG { // Return sum of matrix element // where each element is division // of its corresponding row and // column. static int findSum( int n) { int ans = 0 ; // for rows for ( int i = 1 ; i <= n; i++) // for columns for ( int j = 1 ; j <= n; j++) ans += (i/j); return ans; } // Driven Program public static void main (String[] args) { int N = 2 ; System.out.println( findSum(N)); } } // This code is contributed by anuj_67. |
Python3
# Python 3 program to find sum of # matrix element where each element # is integer division of row and column. # Return sum of matrix element # where each element is division # of its corresponding row and column. def findSum(N): ans = 0 for i in range ( 1 , N + 1 ): for j in range ( 1 , N + 1 ): ans + = i / / j return ans # Driver code N = 2 print (findSum(N)) # This code is contributed # by Shrikant13 |
C#
// C# program to find the sum of matrix // element where each element is an integer // division of row and column. using System; class GFG { // Return sum of matrix element // where each element is division // of its corresponding row and // column. static int findSum( int n) { int ans = 0; // for rows for ( int i = 1; i <= n; i++) // for columns for ( int j = 1; j <= n; j++) ans += (i/j); return ans; } // Driven Program public static void Main () { int N = 2; Console.WriteLine( findSum(N)); } } // This code is contributed by anuj_67. |
PHP
<?php // PHP program to find sum of matrix element // where each element is integer division of // row and column. // Return sum of matrix element // where each element is division // of its corresponding row and // column. function findSum( $n ) { $ans = 0; // for rows for ( $i = 1; $i <= $n ; $i ++) // for columns for ( $j = 1; $j <= $n ; $j ++) $ans += ( $i / $j ); return floor ( $ans ); } // Driver Code $N = 2; echo findSum( $N ); // This code is contributed by anuj_67. ?> |
Javascript
<script> // Javascript program to find the sum of matrix // element where each element is an integer // division of row and column. // Return sum of matrix element // where each element is division // of its corresponding row and // column. function findSum(n) { let ans = 0; // for rows for (let i = 1; i <= n; i++) // for columns for (let j = 1; j <= n; j++) ans += parseInt(i/j, 10); return ans; } let N = 2; document.write(findSum(N)); </script> |
4
Time complexity: O(n2).
Auxiliary Space: O(1)
Method 2 (Efficient):
Let N = 9, the matrix will be
Observe, for each jth column mat[i][k] = 0, for 1 <= k < j, 1 <= i <= N mat[i][k] = 1, for j <= k < 2*j, 1 <= i <= N mat[i][k] = 2, for 2*j <= k < 3*j, 1 <= i <= N and so on. So, in each column i, there are i - 1 zero, followed by i times 1, followed by i times 2, and so on. We traverse matrix column by column and sum elements.
Below is the implementation of this approach.
C++
// C++ program to find sum of matrix element // where each element is integer division of // row and column. #include<bits/stdc++.h> using namespace std; // Return sum of matrix element where each // element is division of its corresponding // row and column. int findSum( int n) { int ans = 0, temp = 0, num; // For each column. for ( int i = 1; i <= n && temp < n; i++) { // count the number of elements of // each column. Initialize to i -1 // because number of zeroes are i - 1. temp = i - 1; // For multiply num = 1; while (temp < n) { if (temp + i <= n) ans += (i * num); else ans += ((n - temp) * num); temp += i; num ++; } } return ans; } // Driven Program int main() { int N = 2; cout << findSum(N) << endl; return 0; } |
Java
// java program to find sum of matrix element // where each element is integer division of // row and column. import java.io.*; class GFG { // Return sum of matrix element where each // element is division of its corresponding // row and column. static int findSum( int n) { int ans = 0 , temp = 0 , num; // For each column. for ( int i = 1 ; i <= n && temp < n; i++) { // count the number of elements of // each column. Initialize to i -1 // because number of zeroes are i - 1. temp = i - 1 ; // For multiply num = 1 ; while (temp < n) { if (temp + i <= n) ans += (i * num); else ans += ((n - temp) * num); temp += i; num ++; } } return ans; } // Driven Program public static void main (String[] args) { int N = 2 ; System.out.println(findSum(N)); } } // This code is contributed by anuj_67. |
Python3
# Program to find sum of matrix element # where each element is integer division # of row and column. # Return sum of matrix element where each # element is division of its corresponding # row and column. def findSum(n): ans = 0 ; temp = 0 ; for i in range ( 1 , n + 1 ): # count the number of elements of # each column. Initialize to i -1 # because number of zeroes are i - 1. if temp < n: temp = i - 1 # For multiply num = 1 while temp < n: if temp + i < = n: ans + = i * num else : ans + = (n - temp) * num temp + = i num + = 1 return ans # Driver Code N = 2 print (findSum(N)) # This code is contributed by Shrikant13 |
C#
// C# program to find sum of matrix // element where each element is // integer division of row and column. using System; class GFG { // Return sum of matrix element // where each element is division // of its corresponding row and column. static int findSum( int n) { int ans = 0, temp = 0, num; // For each column. for ( int i = 1; i <= n && temp < n; i++) { // count the number of elements // of each column. Initialize // to i -1 because number of // zeroes are i - 1. temp = i - 1; // For multiply num = 1; while (temp < n) { if (temp + i <= n) ans += (i * num); else ans += ((n - temp) * num); temp += i; num ++; } } return ans; } // Driver Code public static void Main () { int N = 2; Console.WriteLine(findSum(N)); } } // This code is contributed by anuj_67. |
PHP
<?php // PHP program to find sum of // matrix element where each // element is integer division // of row and column. // Return sum of matrix element // where each element is division // of its corresponding row and column. function findSum( $n ) { $ans = 0; $temp = 0; $num ; // For each column. for ( $i = 1; $i <= $n and $temp < $n ; $i ++) { // count the number of elements // of each column. Initialize // to i -1 because number of // zeroes are i - 1. $temp = $i - 1; // For multiply $num = 1; while ( $temp < $n ) { if ( $temp + $i <= $n ) $ans += ( $i * $num ); else $ans += (( $n - $temp ) * $num ); $temp += $i ; $num ++; } } return $ans ; } // Driver Code $N = 2; echo findSum( $N ); // This code is contributed by anuj_67. ?> |
Javascript
<script> // java Script program to find sum of matrix element // where each element is integer division of // row and column. // Return sum of matrix element where each // element is division of its corresponding // row and column. function findSum(n) { let ans = 0, temp = 0, num; // For each column. for (let i = 1; i <= n && temp < n; i++) { // count the number of elements of // each column. Initialize to i -1 // because number of zeroes are i - 1. temp = i - 1; // For multiply num = 1; while (temp < n) { if (temp + i <= n) ans += (i * num); else ans += ((n - temp) * num); temp += i; num ++; } } return ans; } // Driven Program let N = 2; document.write(findSum(N)); // This code is contributed by sravan kumar G </script> |
3
Time complexity: O(n2).
Auxiliary Space: O(1)
This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.