VOOZH about

URL: https://www.geeksforgeeks.org/dsa/n-th-number-with-digits-in-0-1-2-3-4-5/

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


  • Courses
  • Tutorials
  • Interview Prep

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

Last Updated : 16 Mar, 2023

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

Examples : 

Input: n = 6
Output: 5

Input:  n = 10
Output: 13

Recommended Practice

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 the complete algorithm.

1) push 0 to 5 in ans vector
2) for i=0 to n/6
 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]

Output
13

Time complexity: O(N) where N is given number
Auxiliary space: O(N)

Another Approach:

  • Initialize a variable num = 0
  • Run a while loop till N != 0.
    • Check if num is special
      • Decrement N by 1
      • Break if N becomes 0
    • Increment num by 1
  • Return num as the final answer

Below is the implementation of the above approach:


Output
13

Time Complexity: O(n log n)
Space Complexity: O(1)

Efficient Method :

Algorithm : 

  1. First, convert number n to base 6.
  2. Store the converted value simultaneously in an array.
  3. Print that array in reverse order.

Below is the implementation of the above algorithm:

Output: 

13

Time Complexity:  O(log(n))

Space Complexity: O(log(n))

Another Efficient Method:

Algorithm:

  1. Decrease the number N by 1.
  2. Convert the number N to base 6.

Below is the implementation of the above algorithm :


Output
24

Time Complexity: O(logN)
Auxiliary Space: O(1)

Comment