# Check if a given number can be represented in given a no. of digits in any base

Given a number and no. of digits to represent the number, find if given number can be represented in given no. of digits in any base from 2 to 32.

Examples :

```Input: 8 4
Output: Yes
Possible in base 2 as 8 in base 2 is 1000

Input: 8 2
Output: Yes
Possible in base 3 as 8 in base 3 is 22

Input: 8 3
Output: No
Not possible in any base```

We strongly recommend you to minimize your browser and try this yourself first.

The idea is to check all bases one by one starting from base 2 to base 32. How do we check for a given base? Following are simple steps.
1) IF number is smaller than base and digit is 1, then return true.
2) Else if digit is more than 1 and number is more than base, then remove the last digit from num by doing num/base, reduce the number of digits and recur.
3) Else return false

Below is the implementation of above idea.

## C++

 `// C++ program to check if a given number can be ` `// represented in given number of digits in any base ` `#include ` `using` `namespace` `std; ` ` `  `// Returns true if 'num' can be represented usind 'dig' ` `// digits in 'base' ` `bool` `checkUtil(``int` `num, ``int` `dig, ``int` `base) ` `{ ` `    ``// Base case ` `    ``if` `(dig==1 && num < base) ` `       ``return` `true``; ` ` `  `    ``// If there are more than 1 digits left and number ` `    ``// is more than base, then remove last digit by doing ` `    ``// num/base, reduce the number of digits and recur ` `    ``if` `(dig > 1 && num >= base) ` `       ``return` `checkUtil(num/base, --dig, base); ` ` `  `    ``return` `false``; ` `} ` ` `  `// return true of num can be represented in 'dig' ` `// digits in any base from 2 to 32 ` `bool` `check(``int` `num, ``int` `dig) ` `{ ` `    ``// Check for all bases one by one ` `    ``for` `(``int` `base=2; base<=32; base++) ` `       ``if` `(checkUtil(num, dig, base)) ` `            ``return` `true``; ` `    ``return` `false``; ` `} ` ` `  `// Driver program ` `int` `main() ` `{ ` `    ``int` `num = 8; ` `    ``int` `dig = 3; ` `    ``(check(num, dig))? cout << ``"Yes"` `: cout << ``"No"``; ` `    ``return` `0; ` `} `

## Java

 `// Java program to check if a  ` `// given number can be represented  ` `// in given number of digits in any base ` `class` `GFG ` `{ ` `    ``// Returns true if 'num' can be  ` `    ``// represented usind 'dig' digits in 'base' ` `    ``static` `boolean` `checkUtil(``int` `num, ``int` `dig, ``int` `base) ` `    ``{ ` `        ``// Base case ` `        ``if` `(dig==``1` `&& num < base) ` `        ``return` `true``; ` `     `  `        ``// If there are more than 1 digits ` `        ``// left and number is more than base, ` `        ``// then remove last digit by doing num/base, ` `        ``//  reduce the number of digits and recur ` `        ``if` `(dig > ``1` `&& num >= base) ` `        ``return` `checkUtil(num / base, --dig, base); ` `     `  `        ``return` `false``; ` `    ``} ` `     `  `    ``// return true of num can be  ` `    ``// represented in 'dig' digits  ` `    ``// in any base from 2 to 32 ` `    ``static` `boolean` `check(``int` `num, ``int` `dig) ` `    ``{ ` `        ``// Check for all bases one by one ` `        ``for` `(``int` `base = ``2``; base <= ``32``; base++) ` `        ``if` `(checkUtil(num, dig, base)) ` `                ``return` `true``; ` `        ``return` `false``; ` `    ``}  ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `main (String[] args) ` `    ``{ ` `        ``int` `num = ``8``; ` `        ``int` `dig = ``3``; ` `        ``if``(check(num, dig)) ` `            ``System.out.print(``"Yes"``); ` `        ``else` `            ``System.out.print(``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## Python3

 `# Python program to check ` `# if a given number can be ` `# represented in given number ` `# of digits in any base ` ` `  `# Returns true if 'num' can ` `# be represented using 'dig' ` `# digits in 'base' ` `def` `checkUtil(num,dig,base): ` `     `  `    ``# Base case ` `    ``if` `(dig``=``=``1` `and` `num < base): ` `        ``return` `True` `  `  `    ``# If there are more than 1 ` `    ``# digits left and number ` `    ``# is more than base, then ` `    ``# remove last digit by doing ` `    ``# num/base, reduce the number ` `    ``# of digits and recur ` `    ``if` `(dig > ``1` `and` `num >``=` `base): ` `        ``return` `checkUtil(num``/``base, ``-``-``dig, base) ` `  `  `    ``return` `False` `  `  `# return true of num can ` `# be represented in 'dig' ` `# digits in any base from 2 to 32 ` `def` `check(num,dig): ` ` `  `    ``# Check for all bases one by one ` `    ``for` `base ``in` `range``(``2``,``33``): ` ` `  `        ``if` `(checkUtil(num, dig, base)): ` `            ``return` `True` `    ``return` `False` ` `  `# driver code ` `num ``=` `8` `dig ``=` `3` `if``(check(num, dig)``=``=``True``): ` `    ``print``(``"Yes"``) ` `else``: ` `    ``print``(``"No"``) ` ` `  `# This code is contributed ` `# by Anant Agarwal. `

## C#

 `// C# program to check if a given  ` `// number can be represented in  ` `// given number of digits in any base ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Returns true if 'num' can be  ` `    ``// represented usind 'dig' digits ` `    ``// in 'base' ` `    ``static` `bool` `checkUtil(``int` `num, ``int` `dig, ` `                          ``int` `i) ` `    ``{ ` `         `  `        ``// Base case ` `        ``if` `(dig == 1 && num < i) ` `        ``return` `true``; ` `     `  `        ``// If there are more than 1 digits ` `        ``// left and number is more than base, ` `        ``// then remove last digit by doing  ` `        ``// num/base, reduce the number of  ` `        ``// digits and recur ` `        ``if` `(dig > 1 && num >= i) ` `        ``return` `checkUtil((num / i), --dig, i); ` `     `  `        ``return` `false``; ` `    ``} ` `     `  `    ``// return true of num can be  ` `    ``// represented in 'dig' digits  ` `    ``// in any base from 2 to 32 ` `    ``static` `bool` `check(``int` `num, ``int` `dig) ` `    ``{ ` `         `  `        ``// Check for all bases one by one ` `        ``for` `(``int` `i = 2; i <= 32; i++) ` `        ``if` `(checkUtil(num, dig, i)) ` `                ``return` `true``; ` `        ``return` `false``; ` `    ``}  ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `num = 8; ` `        ``int` `dig = 3; ` `        ``if``(check(num, dig)) ` `            ``Console.WriteLine(``"Yes"``); ` `        ``else` `            ``Console.WriteLine(``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007. `

## PHP

 ` 1 && ``\$num` `>= ``\$base``) ` `    ``return` `checkUtil(``\$num` `/ ``\$base``,  ` `                   ``--``\$dig``, ``\$base``); ` ` `  `    ``return` `false; ` `} ` ` `  `// return true of num can be  ` `// represented in 'dig' digits  ` `// in any base from 2 to 32 ` `function` `check(``\$num``, ``\$dig``) ` `{ ` `    ``// Check for all bases one by one ` `    ``for` `(``\$base` `= 2; ``\$base` `<= 32; ``\$base``++) ` `    ``if` `(checkUtil(``\$num``, ``\$dig``, ``\$base``)) ` `            ``return` `true; ` `    ``return` `false; ` `} ` ` `  `// Driver Code ` `\$num` `= 8; ` `\$dig` `= 3; ` `if` `(check(``\$num``, ``\$dig``) == true) ` `echo` `"Yes"` `; ` `else` `echo` `"No"``; ` ` `  `// This code is contributed by ajit ` `?> `

Output :

`No`

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

My Personal Notes arrow_drop_up

Improved By : Sam007, jit_t

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.