# Program to find the number from given holes

Last Updated : 13 Mar, 2022

Given a number H which represent the total number of holes. The task is to find the smallest number which has that many numbers of holes.
NOTE:

1. 0, 4, 6, 9 has 1 holes each and 8 has 2 holes in it.
2. The number should not contain leading zeros.

Examples:

Input: H = 1
Output: 0
Input: H = 5
Output: 488
Explanation:
Number which has 5 holes in it is 488. i.e (1 + 2 + 2)

Approach:

1. First of all, Check whether the number of holes given is 0 or 1, if 0 then print 1 and if 1 then print 0.
2. If number of holes given is more than 1 then divide the number of holes by 2 and store the remainder in ‘rem’ variable. and quotient in ‘quo’ variable.
3. Now, if value of rem variable is equal to 1 then first print 4 once and then print 8 quo number of times.
4. Else print 8 only quo number of times.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the above approach` `#include ` `using` `namespace` `std;`   `// Function that will find out` `// the number` `void` `printNumber(``int` `holes)` `{`   `    ``// If number of holes` `    ``// equal 0 then return 1` `    ``if` `(holes == 0)` `        ``cout << ``"1"``;`   `    ``// If number of holes` `    ``// equal 0 then return 0` `    ``else` `if` `(holes == 1)` `        ``cout << ``"0"``;`   `    ``// If number of holes` `    ``// is more than 0 or 1.` `    ``else` `{` `        ``int` `rem = 0, quo = 0;`   `        ``rem = holes % 2;` `        ``quo = holes / 2;`   `        ``// If number of holes is` `        ``// odd` `        ``if` `(rem == 1)` `            ``cout << ``"4"``;`   `        ``for` `(``int` `i = 0; i < quo; i++)` `            ``cout << ``"8"``;` `    ``}` `}`   `// Driver code` `int` `main()` `{` `    ``int` `holes = 3;`   `    ``// Calling Function` `    ``printNumber(holes);`   `    ``return` `0;` `}`

## Java

 `// Java implementation of the above approach` `import` `java.io.*;`   `class` `GFG ` `{` `        `  `// Function that will find out` `// the number` `static` `void` `printNumber(``int` `holes)` `{`   `    ``// If number of holes` `    ``// equal 0 then return 1` `    ``if` `(holes == ``0``)` `        ``System.out.print(``"1"``);`   `    ``// If number of holes` `    ``// equal 0 then return 0` `    ``else` `if` `(holes == ``1``)` `        ``System.out.print(``"0"``);`   `    ``// If number of holes` `    ``// is more than 0 or 1.` `    ``else` `    ``{` `        ``int` `rem = ``0``, quo = ``0``;`   `        ``rem = holes % ``2``;` `        ``quo = holes / ``2``;`   `        ``// If number of holes is` `        ``// odd` `        ``if` `(rem == ``1``)` `            ``System.out.print(``"4"``);`   `        ``for` `(``int` `i = ``0``; i < quo; i++)` `                ``System.out.print(``"8"``);` `    ``}` `}`   `// Driver code` `public` `static` `void` `main (String[] args) ` `{` `    ``int` `holes = ``3``;` `    `  `    ``// Calling Function` `    ``printNumber(holes);` `}` `}`   `// This code is contributed by Sachin.`

## Python3

 `# Python3 implementation of ` `# the above approach`   `# Function that will find out` `# the number` `def` `printNumber(holes):`   `    ``# If number of holes` `    ``# equal 0 then return 1` `    ``if` `(holes ``=``=` `0``):` `        ``print``(``"1"``)`   `    ``# If number of holes` `    ``# equal 0 then return 0` `    ``elif` `(holes ``=``=` `1``):` `        ``print``(``"0"``, end ``=` `"")`   `    ``# If number of holes` `    ``# is more than 0 or 1.` `    ``else``:` `        ``rem ``=` `0` `        ``quo ``=` `0`   `        ``rem ``=` `holes ``%` `2` `        ``quo ``=` `holes ``/``/` `2`   `        ``# If number of holes is` `        ``# odd` `        ``if` `(rem ``=``=` `1``):` `            ``print``(``"4"``, end ``=` `"")`   `        ``for` `i ``in` `range``(quo):` `            ``print``(``"8"``, end ``=` `"")`   `# Driver code` `holes ``=` `3`   `# Calling Function` `printNumber(holes)`   `# This code is contributed by Mohit kumar`

## C#

 `// C# implementation of the above approach` `using` `System;`   `class` `GFG` `{` `    `  `// Function that will find out` `// the number` `static` `void` `printNumber(``int` `holes)` `{`   `    ``// If number of holes` `    ``// equal 0 then return 1` `    ``if` `(holes == 0)` `        ``Console.Write (``"1"``);`   `    ``// If number of holes` `    ``// equal 0 then return 0` `    ``else` `if` `(holes == 1)` `        ``Console.Write (``"0"``);`   `    ``// If number of holes` `    ``// is more than 0 or 1.` `    ``else` `    ``{` `        ``int` `rem = 0, quo = 0;`   `        ``rem = holes % 2;` `        ``quo = holes / 2;`   `        ``// If number of holes is` `        ``// odd` `        ``if` `(rem == 1)` `        ``Console.Write (``"4"``);`   `        ``for` `(``int` `i = 0; i < quo; i++)` `            ``Console.Write (``"8"``);` `    ``}` `}`   `// Driver code` `static` `public` `void` `Main ()` `{` `    ``int` `holes = 3;` `    `  `    ``// Calling Function` `    ``printNumber(holes);` `}` `}`   `// This code is contributed by jit_t`

## Javascript

 ``

Output:

`48`

Time Complexity: O(n)

Auxiliary Space: O(1)