किसी संख्या को दूसरी संख्या के घात में निरूपित करने की समस्या की विवेचना कीजिए। हमें दो नंबर दिए गए हैं, x और y। हमें यह बताने की जरूरत है कि क्या y को x की घात में दर्शाया जा सकता है, जहां x की प्रत्येक घात का एक बार उपयोग किया जा सकता है, उदाहरण के लिए
Input: x = 4, y = 11 Output: true Explanation: 4^2 - 4^1 - 4^0 = 11 Hence y can be represented in the power of x. Input: x = 2, y = 19 Output: true Explanation: 2^4 + 2^1 + 2^0 =19 Hence y can be represented in the power of x. Input: x = 3, y = 14 Output: false Explanation: 14 can be represented as 3^2 + 3^1 + 3^0 + 3^0 but we cannot use one term of power of x twice.
समाधान खोजने के लिए दृष्टिकोण
19 को 2 की घात के पदों में कैसे निरूपित किया जाता है, इस उदाहरण की जांच करके हम एक समीकरण बना सकते हैं -
c0(x^0) + c1(x^1) + c2(x^2) + c3(x^3) + … = y ….(1),
जहां c0, c1, c2 -1, 0, +1 हो सकता है, यह दर्शाने के लिए कि क्या (-1) पद घटाया जाना है, (+1) पद जोड़ा जाना है, (0) पद शामिल नहीं किया जाना है -
c1(x^1) + c2(x^2) + c3(x^3) + … = y - c0,
x को सामान्य मानकर,
c1(x^0) + c2(x^1) + c3(x^2) + … = (y - c0)/x ….(2),
eq (1) और (2) से हम फिर से संख्या का प्रतिनिधित्व कर सकते हैं और अस्तित्व के समाधान के लिए (y - Ci) x से विभाज्य होना चाहिए और Ci में केवल -1, 0 और +1 हो सकते हैं।
तो अंत में हमें y>0 तक जांचना होगा कि क्या [(y-1)% x ==0] या [(y)% x ==0] या [(y+1)% x ==0] या क्या a समाधान मौजूद नहीं है।
उदाहरण
#include <bits/stdc++.h> using namespace std; int main(){ int x = 2, y = 19; // checking y divisibility till y>0 while (y>0) { // If y-1 is divisible by x. if ((y - 1) % x == 0) y = (y - 1) / x; // If y is divisible by x. else if (y % x == 0) y = y / x; // If y+1 is divisible by x. else if ((y + 1) % x == 0) y = (y + 1) / x; // If no condition satisfies means // y cannot be represented in terms of power of x. else break; } if(y==0) cout<<"y can be represented in terms of the power of x."; else cout<<"y cannot be represented in terms of the power of x."; return 0; }
आउटपुट
y can be represented in terms of the power of x.
निष्कर्ष
इस ट्यूटोरियल में, हमने चर्चा की कि कैसे जांचा जाए कि किसी संख्या का प्रतिनिधित्व किसी अन्य संख्या की शक्ति के संदर्भ में संभव है या नहीं। हमने इस समस्या को हल करने के लिए y के साथ वर्तमान, पूर्ववर्ती और बाद की संख्या विभाज्यता की जाँच करके एक सरल दृष्टिकोण पर चर्चा की।
हमने इस समस्या के लिए C++ प्रोग्राम पर भी चर्चा की जिसे हम प्रोग्रामिंग भाषाओं जैसे C, Java, Python, आदि के साथ कर सकते हैं। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगेगा।