मान लीजिए कि हमारे पास एक संख्या 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