मान लीजिए कि हमारे पास एक संख्या n है, और अंकों की संख्या d है। हमें यह जांचना है कि संख्या n को 2 से 32 तक किसी भी आधार में d अंक संख्या के रूप में दर्शाया जा सकता है। मान लीजिए कि संख्या n 8 है, और d =4 है, तो इसे बाइनरी में 1000 के रूप में दर्शाया जा सकता है, यहां d 4 है। ।
विचार 2 से 32 तक सभी आधारों को एक-एक करके जांचना है। आधार की जांच के लिए हम इन चरणों का पालन कर सकते हैं।
- यदि संख्या आधार से छोटी है, और अंक 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) {
// 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";
} आउटपुट
Can be represented