Related Articles

# Smallest x such that 1*n, 2*n, … x*n have all digits from 1 to 9

• Difficulty Level : Easy
• Last Updated : 28 Apr, 2021

Given a positive number n. We need to find x such that 1*n, 2*n, 3*n…..x*n gives all 10 digits at least once. If no such x is possible print -1.
Examples:

```Input : n = 1692
Output : 3
Explanation:
n = 1692, we got the digits- 1, 2, 6, 9
2*n = 3384, we got the digits- 1, 2, 3, 4,
6, 8, 9.
3*n = 5076, we got the digits- 1, 2, 3, 4,
5, 6, 7, 8, 9.
At this step we got all the digits at least
once. Therefore our answer is 3.

Input  : 1
Output : 10

Input  : 0
Output :-1```

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

The idea used here is simple. We start from 1 and keep multiplying with n till we do not get all the 10 digits at least once. In order to keep track of all the digits coming at each iteration, we use a temporary array of size 10 initially having all zeroes. Whenever we got a digit the first time we will initialize its index in array with 1. When all digits are visited once, we are done.
Following is the implementation of it.

## C++

 `// CPP program to find x such that 1*n, 2*n, 3*n``// ...x * n have all digits from 1 to 9 at least``// once``#include ``using` `namespace` `std;` `// Returns smallest value x such that 1*n, 2*n,``// 3*n ...x * n have all digits from 1 to 9 at``// least once``int` `smallestX(``int` `n)``{``    ``// taking temporary array and variable.``    ``int` `temp = { 0 };` `    ``if` `(n == 0)``        ``return` `-1;` `    ``// iterate till we get all the 10 digits``    ``// at least once``    ``int` `count = 0, x = 0;``    ``for` `(x = 1; count < 10; x++) {``        ``int` `y = x * n;``        ` `        ``// checking all the digits``        ``while` `(y) {``            ``if` `(temp[y % 10] == ``false``) {``                ``count++;``                ``temp[y % 10] = ``true``;``            ``}``            ``y /= 10;``        ``}``    ``}``    ``return` `x - 1;``}` `// driver function``int` `main()``{``    ``int` `n = 5;``    ``cout <

## Java

 `// Java program to find x such``// that 1*n, 2*n, 3*n...x * n``// have all digits from 1 to 9``// at least once``import` `java.io.*;``import` `java.util.*;` `class` `GFG``{``    ` `// Returns smallest value x``// such that 1*n, 2*n, 3*n``// ...x * n have all digits``// from 1 to 9 at least once``public` `static` `int` `smallestX(``int` `n)``{``    ``// taking temporary``    ``// array and variable.``    ``int``[] temp = ``new` `int``[``10``];``    ``for``(``int` `i = ``0``; i < ``10``; i++)``    ``temp[i] = ``0``;` `    ``if` `(n == ``0``)``        ``return` `-``1``;` `    ``// iterate till we get``    ``// all the 10 digits``    ``// at least once``    ``int` `count = ``0``, x = ``0``;``    ``for` `(x = ``1``; count < ``10``; x++)``    ``{``        ``int` `y = x * n;``        ` `        ``// checking all``        ``// the digits``        ``while` `(y > ``0``)``        ``{``            ``if` `(temp[y % ``10``] == ``0``)``            ``{``                ``count++;``                ``temp[y % ``10``] = ``1``;``            ``}``            ``y /= ``10``;``        ``}``    ``}``    ``return` `x - ``1``;``}` `// Driver Code``public` `static` `void` `main(String args[])``{``    ``int` `n = ``5``;``    ``System.out.print(smallestX(n));``}``}` `// This code is contributed``// by Akanksha Rai(Abby_akku)`

## Python3

 `# Python3 program to find x such``# that 1*n, 2*n, 3*n ...x * n``# have all digits from 1 to 9``# at least once` `# Returns smallest value x such``# that 1*n, 2*n, 3*n ...x * n``# have all digits from 1 to 9``# at least once``def` `smallestX(n):``    ``# taking temporary``    ``# array and variable.``    ``temp ``=` `[``0``]``*``10` `    ``if` `(n ``=``=` `0``):``        ``return` `-``1` `    ``# iterate till we get``    ``# all the 10 digits``    ``# at least once``    ``count ``=` `0``    ``x ``=` `1``    ``while``(count < ``10``):``        ``y ``=` `x ``*` `n``        ` `        ``# checking all``        ``# the digits``        ``while` `(y>``0``):``            ``if` `(temp[y ``%` `10``] ``=``=` `0``):``                ``count``+``=``1``                ``temp[y ``%` `10``] ``=` `1``            ``y ``=` `int``(y ``/` `10``)``        ``x``+``=``1` `    ``return` `x ``-` `1`  `# Driver code``if` `__name__``=``=``'__main__'``:``    ``n ``=` `5``    ``print``(smallestX(n))` `# This code is contributed``# by mits`

## C#

 `// C# program to find x such``// that 1*n, 2*n, 3*n...x * n``// have all digits from 1 to 9``// at least once``using` `System;` `class` `GFG``{``    ` `// Returns smallest value x``// such that 1*n, 2*n, 3*n``// ...x * n have all digits``// from 1 to 9 at least once``public` `static` `int` `smallestX(``int` `n)``{``    ``// taking temporary``    ``// array and variable.``    ``int``[] temp = ``new` `int``;``    ``for``(``int` `i = 0; i < 10; i++)``    ``temp[i] = 0;` `    ``if` `(n == 0)``        ``return` `-1;` `    ``// iterate till we get``    ``// all the 10 digits``    ``// at least once``    ``int` `count = 0, x = 0;``    ``for` `(x = 1; count < 10; x++)``    ``{``        ``int` `y = x * n;``        ` `        ``// checking all the digits``        ``while` `(y > 0)``        ``{``            ``if` `(temp[y % 10] == 0)``            ``{``                ``count++;``                ``temp[y % 10] = 1;``            ``}``            ``y /= 10;``        ``}``    ``}``    ``return` `x - 1;``}` `// dDriver Code``static` `void` `Main()``{``    ``int` `n = 5;``    ``Console.Write(smallestX(n));``}``}` `// This code is contributed by mits`

## PHP

 ``

## Javascript

 ``

Output:

`18`

This article is contributed by Saloni Gupta. 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.