कथन - किसी संख्या की घात वाले दिए गए वजन का उपयोग करके पैन को संतुलित करना।
विवरण - इस समस्या में हमें एक पैन आधारित तौल मशीन दी गई है। हमें एक वजन T और कुछ अन्य वजन दिए गए हैं जिनके मान किसी संख्या a की घात हैं। हमें दिए गए वजन का उपयोग करके पैन को संतुलित करना है।
अब, इस आधार पर हमारे पास यह समीकरण है:
T + (a की कुछ घात) = (a की कुछ अन्य घात)
अब, हमें याद रखना चाहिए कि किसी घात मान के अनुरूप ठीक एक वजन है।
उदाहरण,
T = 12 : a = 4
नीचे दिए गए मानों का उपयोग करके, हम वजन को इस प्रकार संतुलित कर सकते हैं:
12 + 4 = 16
अब, इस समस्या को हल करने के लिए हमें T को a की घात में प्रस्तुत करने की आवश्यकता है। इसके लिए हम T का आधार 10 से a में बदल देंगे।
केस 1 - आधार बदलने पर, यदि प्रतिनिधित्व में केवल 1 और 0 हैं। तो 1 के वजन का उपयोग करके T का मान योजक रूप से बनाया जा सकता है।
एक उदाहरण लेते हैं:
T = 10 : a = 3,
10 का आधार 3 में बदलने पर मान 101 हो जाता है।
तो 30 और 32 (1 + 9) = 10 का उपयोग करके बनाया जाएगा।
केस 2 - आधार बदलने पर, यदि प्रतिनिधित्व में 1 और 0 के अलावा अन्य मान थे, तो संतुलन के लिए कुछ और ऑपरेशन करने की आवश्यकता है। यहां, समाधान के लिए अनिवार्य शर्त यह है कि आधार रूपांतरण में अंक मान (a - 1) होना चाहिए। इस मामले में, हम मान की घात को T की तरफ स्थानांतरित करेंगे। और आधार प्रतिनिधित्व में संख्या को 1 से बढ़ाएंगे।
एक उदाहरण लेते हैं:
T = 7 : a = 3
7 का आधार 3 में बदलने पर हमें 021 मिलेगा।
31 को T की तरफ स्थानांतरित करके और दूसरी तरफ 1 बढ़ाकर। हमें संख्या = 10 मिलती है जिसे 101 के रूप में दर्शाया जाता है यानी (9 + 1)। जिसे संतुलित किया जा सकता है।
उपरोक्त मामलों के आधार पर हम इस समस्या को हल करने के लिए एक प्रोग्राम बनाएंगे।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
bool isBalancePossible(int T, int a) {
vector baseForm;
while (T) {
baseForm.push_back(T % a);
T /= a;
}
baseForm.push_back(0);
for (int i = 0; i < baseForm.size(); i++) {
if (baseForm[i] != 0 && baseForm[i] != 1 &&
baseForm[i] != (a - 1) && baseForm[i] != a)
return false;
if (baseForm[i] == a || baseForm[i] == (a - 1))
baseForm[i + 1] += 1;
}
return true;
}
int main() {
int T = 21;
int a = 4;
if (isBalancePossible(T, a))
cout << "Balance is possible" << endl;
else
cout << "Balance is not possible" << endl;
return 0;
}
आउटपुट
Balance is possible