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

C++Server Side ProgrammingProgramming

Suppose we have a number n, and number of digits d. We have to check whether the number n can be represented as d digit number in any base from 2 to 32. Suppose the number n is 8, and d = 4, then this can be represented as 1000 in binary, here the d is 4.

The idea is to check all bases one by one from 2 to 32. We can follow these steps to check the base.

• If the number is smaller than base, and digit is 1, then return true
• if digit is more than one and number is more than base, then remove the last digit from the number by doing num/base, thus reduce the number of digits, then recursively do this again and again.
• Otherwise return false.

## Example

Live Demo

#include <iostream>
using namespace std;
bool isRepresentedInDDigits(int num, int d, int base) {
if (d==1 && num < base)
return true;
if (d > 1 && num >= base)
return isRepresentedInDDigits(num/base, --d, base);
return false;
}
bool checkNumber(int num, int d) {
// Check for all bases one by one
for (int base=2; base<=32; base++)
if (isRepresentedInDDigits(num, d, base))
return true;
return false;
}
int main() {
int num = 8;
int dig = 2;
if(checkNumber(num, dig))
cout << "Can be represented";
else
cout << "Can not be represented";
}

## Output

Can be represented