Find the first N integers such that the sum of their digits is equal to 10
Given an integer N, the task is to print first N integers whose sum of digits is 10.
Examples:
Input: N = 4
Output: 19 28 37 46
Input: N = 6
Output: 19 28 37 46 55 64
Approach: Initialise num = 19 to get the first number of the series, now add 9 to the previous number and check whether the sum of the digits of the new number is 10. If yes then this is the next number of the series, this is because the difference between any two consecutive numbers of the required series is at least 9.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the // sum of digits of n int sum( int n) { int sum = 0; while (n) { // Add the last digit to the sum sum = sum + n % 10; // Remove last digit n = n / 10; } // Return the sum of digits return sum; } // Function to print the first n numbers // whose sum of digits is 10 void firstN( int n) { // First number of the series is 19 int num = 19, cnt = 1; while (cnt != n) { // If the sum of digits of the // current number is equal to 10 if (sum(num) == 10) { // Print the number cout << num << " " ; cnt++; } // Add 9 to the previous number num += 9; } } // Driver code int main() { int n = 10; firstN(n); return 0; } |
Java
// Java implementation of the approach import java.util.*; class GFG { // Function to return the // sum of digits of n static int sum( int n) { int sum = 0 ; while (n > 0 ) { // Add the last digit to the sum sum = sum + n % 10 ; // Remove last digit n = n / 10 ; } // Return the sum of digits return sum; } // Function to print the first n numbers // whose sum of digits is 10 static void firstN( int n) { // First number of the series is 19 int num = 19 , cnt = 1 ; while (cnt != n) { // If the sum of digits of the // current number is equal to 10 if (sum(num) == 10 ) { // Print the number System.out.print(num + " " ); cnt++; } // Add 9 to the previous number num += 9 ; } } // Driver code public static void main(String[] args) { int n = 10 ; firstN(n); } } // This code is contributed by Rajput-Ji |
Python3
# Python3 implementation of the approach # Function to return the # sum of digits of n def sum (n) : sum = 0 ; while (n) : # Add the last digit to the sum sum = sum + n % 10 ; # Remove last digit n = n / / 10 ; # Return the sum of digits return sum ; # Function to print the first n numbers # whose sum of digits is 10 def firstN(n) : # First number of the series is 19 num = 19 ; cnt = 1 ; while (cnt ! = n) : # If the sum of digits of the # current number is equal to 10 if ( sum (num) = = 10 ) : # Print the number print (num,end = " " ); cnt + = 1 ; # Add 9 to the previous number num + = 9 ; # Driver code if __name__ = = "__main__" : n = 10 ; firstN(n); # This code is contributed by AnkitRai01 |
C#
// C# implementation of the approach using System; class GFG { // Function to return the // sum of digits of n static int sum( int n) { int sum = 0; while (n > 0) { // Add the last digit to the sum sum = sum + n % 10; // Remove last digit n = n / 10; } // Return the sum of digits return sum; } // Function to print the first n numbers // whose sum of digits is 10 static void firstN( int n) { // First number of the series is 19 int num = 19, cnt = 1; while (cnt != n) { // If the sum of digits of the // current number is equal to 10 if (sum(num) == 10) { // Print the number Console.Write(num + " " ); cnt++; } // Add 9 to the previous number num += 9; } } // Driver code public static void Main(String[] args) { int n = 10; firstN(n); } } // This code is contributed by PrinciRaj1992 |
Javascript
<script> // JavaScript implementation of the approach // Function to return the // sum of digits of n function sum(n) { var sum = 0; while (n > 0) { // Add the last digit to the sum sum = sum + n % 10; // Remove last digit n = parseInt(n / 10); } // Return the sum of digits return sum; } // Function to print the first n numbers // whose sum of digits is 10 function firstN(n) { // First number of the series is 19 var num = 19, cnt = 1; while (cnt != n) { // If the sum of digits of the // current number is equal to 10 if (sum(num) == 10) { // Print the number document.write(num + " " ); cnt++; } // Add 9 to the previous number num += 9; } } // Driver code var n = 10; firstN(n); // This code contributed by Rajput-Ji </script> |
Output:
19 28 37 46 55 64 73 82 91
Time Complexity: O(n*log(n))
Auxiliary Space: O(1)