Given, write a program that prints the Nth number whose sum of digits is 10.
Examples:
Input : 2
Output : 28
Explanation : the first number is 19, whose digit sum is 10.
Input : 5
Output : 55
Explanation : the first four numbers whose digit sum is 10 are
19,28,37,46.
Approach: In order to obtain the Nth number whose sum of digits is 10, we start iterating from i=18 and keep a count for all numbers whose digit sum returns 10. When the count is N, we return the value of i at that instant.
Below is the implementation of the above approach:
// CPP program to print the Nth
// number whose sum of digits is 10
//#include <bits/stdc++.h>
#include<iostream>
using namespace std;
#define ll long long
// function to check if the sum of digit
// is 10 or not
int isTen(int n){
int sum = 0;
// calculates the sum of digits
while (n){
sum += n%10;
n /= 10;
}
// returns 1 if sum of digits is 10
// returns 0 is sum of digits is not 10
return (sum==10);
}
// function that returns the N-th number
// whose sum of digits is 10
int getNumber(int n)
{
int count = 0;
// iterate from 19 till we get out Nth number
for (int i = 19 ; ; i++)
{
if (isTen(i) == 1)
{
// increase count
count++;
// return the N-th number
if (count == n)
return i;
}
}
}
// Driver Code
int main(){
int N = 8;
cout << getNumber(N);
return 0;
}
Output:
82
Time Complexity:
O(1)
Please write comments if you find anything incorrect. A gentle request to share this topic on your social media profile.
