Given two integer N and D, the task is to find the sum of all the integers from 1 to N whose unit digit is D.
Examples:
Input: N = 30, D = 3
Output: 39
3 + 13 + 23 = 39
Input: N = 5, D = 7
Output: 0
Naive approach:
- Traverse from 1 to N.
- If the unit digit of the number is D add the number to the sum.
- Finally print the value of sum.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
#define ll long long int // Function to return the required sum ll getSum( int n, int d)
{ ll sum = 0;
for ( int i = 1; i <= n; i++) {
// If the unit digit is d
if (i % 10 == d)
sum += i;
}
return sum;
} // Driver code int main()
{ int n = 30, d = 3;
cout << getSum(n, d);
return 0;
} |
// Java implementation of the approach import java.util.*;
class solution
{ // Function to return the required sum static long getSum( int n, int d)
{ long sum = 0 ;
for ( int i = 1 ; i <= n; i++) {
// If the unit digit is d
if (i % 10 == d)
sum += i;
}
return sum;
} // Driver code public static void main(String args[])
{ int n = 30 , d = 3 ;
System.out.println(getSum(n, d));
} } |
# Python3 implementation of the approach # Function to return the required sum def getSum(n, d) :
sum = 0 ;
for i in range (n + 1 ) :
# If the unit digit is d
if (i % 10 = = d) :
sum + = i
return sum
# Driver code if __name__ = = "__main__" :
n , d = 30 , 3
print (getSum(n, d))
# This code is contributed by Ryuga |
// C# implementation of the approach using System;
class gfg
{ // Function to return the required sum
public static int getSum( int n, int d)
{
int sum = 0;
for ( int i = 1; i <= n; i++) {
// If the unit digit is d
if (i % 10 == d)
sum += i;
}
return sum;
} // Driver code public static int Main()
{
int n = 30, d = 3;
Console.WriteLine( getSum(n, d));
return 0;
}
} |
<?php // PHP implementation of the approach // Function to return the required sum function getSum( $n , $d )
{ $sum = 0;
for ( $i = 1; $i <= $n ; $i ++)
{
// If the unit digit is d
if ( $i % 10 == $d )
$sum += $i ;
}
return $sum ;
} // Driver code $n = 30;
$d = 3;
echo getSum( $n , $d );
// This code is contributed by Sachin ?> |
<script> // java script implementation of the approach // Function to return the required sum function getSum(n, d)
{ let sum = 0;
for (let i = 1; i <= n; i++)
{
// If the unit digit is d
if (i % 10 == d)
sum += i;
}
return sum;
} // Driver code let n = 30; let d = 3; document.write( getSum(n, d)); // This code is contributed // by bobby </script> |
39
Time Complexity: O(n) since one traversal of the loop till the number is required to complete all operations hence the overall time required by the algorithm is linear
Auxiliary Space: O(1) since no extra array is used, the space taken by the algorithm is constant
Efficient approach: While D < N update sum = sum + D and D = D + 10. Print the sum in the end.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
#define ll long long int // Function to return the required sum ll getSum( int n, int d)
{ ll sum = 0;
while (d <= n)
{
sum += d;
d += 10;
}
return sum;
} // Driver code int main()
{ int n = 30, d = 3;
cout << getSum(n, d);
return 0;
} |
// Java implementation of the approach class Solution
{ // Function to return the required sum static long getSum( int n, int d)
{ long sum = 0 ;
while (d <= n) {
sum += d;
d += 10 ;
}
return sum;
} // Driver code public static void main(String args[])
{ int n = 30 , d = 3 ;
System.out.print(getSum(n, d));
} } //contributed by Arnab Kundu |
# Python3 implementation of the approach # Function to return the required sum def getSum(n, d):
sum = 0
while (d < = n):
sum + = d
d + = 10
return sum
# Driver code n = 30
d = 3
print (getSum(n, d))
# This code is contributed # by sahishelangia |
// C# implementation of the approach using System;
class GFG
{ // Function to return the required sum static long getSum( int n, int d)
{ long sum = 0;
while (d <= n)
{
sum += d;
d += 10;
}
return sum;
} // Driver code public static void Main()
{ int n = 30, d = 3;
Console.Write(getSum(n, d));
} } // This code is contributed // by Akanksha Rai |
<?php // PHP implementation of the approach // Function to return the required sum function getSum( $n , $d )
{ $sum = 0;
while ( $d <= $n )
{
$sum += $d ;
$d += 10;
}
return $sum ;
} // Driver code $n = 30; $d = 3;
echo (getSum( $n , $d ));
// This Code is contributed // by Mukul Singh ?> |
<script> // java script implementation of the approach // Function to return the required sum function getSum(n, d)
{ let sum = 0;
while (d <= n)
{
sum += d;
d += 10;
}
return sum;
} // Driver code let n = 30; let d = 3; document.write(getSum(n, d)); // This code is contributed // by sravan kumar </script> |
39
Time Complexity: O(n) since one traversal of the loop till the number is required to complete all operations hence the overall time required by the algorithm is linear
Auxiliary Space: O(1) since no extra array is used so the space taken by the algorithm is constant