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), since no extra space has been taken.
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.
Please Login to comment...