समस्या विवरण
संख्या n और अंकों की संख्या d दी गई है। जांचें कि क्या n को आधार 2 से 32 में से किसी में d अंकों में प्रदर्शित किया जा सकता है।
उदाहरण: n=8, d=4 → बाइनरी में 1000 (4 अंक) → YES
एल्गोरिदम
- आधार 2 से 32 तक जांचें
- यदि n < आधार और d==1 → true
- यदि n ≥ आधार और d>1 → पुनरावर्ती रूप से n/आधार और d-1 के साथ जांचें
उदाहरण कोड
#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) {
for (int base = 2; base <= 32; base++)
if (isRepresentedInDDigits(num, d, base))
return true;
return false;
}
int main() {
int num = 8, dig = 2;
if (checkNumber(num, dig))
cout << "Can be represented";
else
cout << "Cannot be represented";
return 0;
}
आउटपुट
Can be represented