Find a N-digit number such that it is not divisible by any of its digits
Given an integer N, the task is to find any N-digit positive number (except for zeros) such that it is not divisible by any of its digits. If it is not possible to find any such number then print -1.
Note: There can be more than one such number for the same N-digit.
Input: N = 2
23 is not divisible by 2 or 3
Input: N = 3
The easiest solution to this problem can be thought of with the help of digits ‘4’ and ‘5’.
- Since, in order for a number to be divisible by 5, the number must end with 0 or 5; and in order for it to be divisible by 4, the last two digits if the number must be divisible by 4.
- Therefore, a shortcut method can be applied to prevent both of the divisibility criteria of 4 and as well as of 5, as:
- To prevent a number from being divisible by 5, the number can contain 5 for every other digit except for last digit.
Therefore for N digit number, (N - 1) digits must be 5 = 5555...(N-1 times)d where d is the Nth digit
- To prevent a number from being divisible by 4, the number can contain 5 at the second last digit and 4 at the last digit.
Therefore for N digit number, Last digit must be 4 = 5555...(N-1 times)4
Below is the implementation of the above approach:
Time complexity: O(N), where N is the required size of the number.
Auxiliary Space: O(1), as constant space is required.