n-th number with digits in {0, 1, 2, 3, 4, 5}

3.8

Given a number n and we have to find n-th number such that it’s digits only consist 0, 1, 2, 3, 4 or 5.

Examples:

Input  : n = 6
Output : 5

Input :  n = 10
Output : 13

We first store 0, 1, 2, 3, 4, 5 in an array. We can see that next numbers will be 10, 11, 12,,13, 14, 15 and after that numbers will be 20, 21, 23, 24, 25 and so on. We can see the pattern that is repeating again and again. We save the calculated result and use it for further calculations.
next 6 numbers are-
1*10+0 = 10
1*10+1 = 11
1*10+2 = 12
1*10+3 = 13
1*10+4 = 14
1*10+5 = 15

and after that next 6 numbers will be-
2*10+0 = 20
2*10+1 = 21
2*10+2 = 22
2*10+3 = 23
2*10+4 = 24
2*10+5 = 25

We use this pattern to find the n-th number. Below is complete algorithm.

1) push 0 to 5 in ans vector
2) for i=0 to n
     for j=0 to 6
          
          // this will be the case when first 
          // digit will be zero 
          if (ans[i]*10! = 0) 
              ans.push_back(ans[i]*10 + ans[j])

3) print ans[n-1]
// C++ program to find n-th number with digits
// in {0, 1, 2, 3, 4, 5}
#include <bits/stdc++.h>
using namespace std;

// Returns the N-th number with given digits
int findNth(int n)
{
    // vector to store results
    vector<int> ans;

    // push first 6 numbers in the answer
    for (int i = 0; i < 6; i++)
        ans.push_back(i);

    // calculate further results
    for (int i = 0; i <= n; i++) 
        for (int j = 0; j < 6; j++) 
            if ((ans[i] * 10) != 0)
                ans.push_back(ans[i] * 10 + ans[j]);        
    
    return ans[n - 1];
}

// Driver code
int main()
{
    int n = 10;
    cout << findNth(n);
    return 0;
}

Output:

13

This article is contributed by Niteesh Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

GATE CS Corner    Company Wise Coding Practice

Recommended Posts:



3.8 Average Difficulty : 3.8/5.0
Based on 6 vote(s)










Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.