Find the number of digits in the nth number constructed by using 6, 1, 4 and 9 as the only digits in the ascending order.

First few numbers constructed by using only 6, 1, 4 and 9 as digits in the ascending order would be: 1, 6, 4,

9, 11, 14, 16, 19, 41, 44, 46, 49, 61, 64, 66, 69, 91, 94, 96, 99, 111, 114, 116, 119 and so on.

Examples:

Input : 6 Output : 2 6th digit of the series is 14 which has 2 digits. Input : 21 Output : 3 21st digit of the series is 111 which has 3 digits.

**Simple Approach:** This is a brute force approach.

1. Initialize a number to 1 and a counter to 0.

2. Check if the initialized number has only 6, 1, 4 or 9 as it’s digits.

3. If it has only the mentioned digits then increase the counter by 1.

4. Increase the number and repeat the above steps until the counter is less than n.

**Note:** The value of n could be large and hence this approach can’t work as it’s not time efficient.

**Efficient Approach:** You can calculate the number of k digit numbers in O (1) time and they will be always be power of 4, for instance number of 1 digit numbers in the series would be 4, number of 2 digit numbers in the series would be 16 and so on.

1. Count all subsequent k digit numbers and keep adding them to a sum.

2. Break the loop when sum is greater than or equal to n.

3. Maintain a counter to keep track of the number of digits.

4. The value of the counter at the break of the loop will indicate the answer.

**Note:** Since n could be really large we have used boost library, to know more about boost library give this article a read: http://gdevtest.geeksforgeeks.org/advanced-c-boost-library/