किसी संख्या को दूसरी संख्या की घात में प्रस्तुत करने की समस्या पर चर्चा करें। हमें दो संख्याएं, x और y दी गई हैं। हमें यह बताना होगा कि क्या y को x की घात में प्रस्तुत किया जा सकता है जहां x की प्रत्येक घात का उपयोग एक बार किया जा सकता है, उदाहरण के लिए:
इनपुट: x = 4, y = 11 आउटपुट: true व्याख्या: 4² - 4¹ - 4⁰ = 11 अतः y को x की घात में प्रस्तुत किया जा सकता है। इनपुट: x = 2, y = 19 आउटपुट: true व्याख्या: 2⁴ + 2¹ + 2⁰ = 19 अतः y को x की घात में प्रस्तुत किया जा सकता है। इनपुट: x = 3, y = 14 आउटपुट: false व्याख्या: 14 को 3² + 3¹ + 3⁰ + 3⁰ के रूप में प्रस्तुत किया जा सकता है लेकिन हम x की घात के एक पद का दो बार उपयोग नहीं कर सकते।
समाधान खोजने का दृष्टिकोण
उदाहरण की जांच करने पर कि 19 को 2 की घातों के पदों में कैसे प्रस्तुत किया गया है, हम एक समीकरण बना सकते हैं:
c₀(x⁰) + c₁(x¹) + c₂(x²) + c₃(x³) + ... = y ...(1),
जहां c₀, c₁, c₂ -1, 0, +1 हो सकते हैं जो दर्शाता है कि (-1) पद घटाया जाना है, (+1) पद जोड़ा जाना है, (0) पद शामिल नहीं करना है।
c₁(x¹) + c₂(x²) + c₃(x³) + ... = y - c₀,
x को सामान्य लेकर,
c₁(x⁰) + c₂(x¹) + c₃(x²) + ... = (y - c₀)/x ...(2),
समीकरण (1) और (2) से हम संख्या को फिर से उसी तरह प्रस्तुत कर सकते हैं और एक समाधान के अस्तित्व के लिए (y - cᵢ) x से विभाज्य होना चाहिए और cᵢ में केवल -1, 0 और +1 हो सकते हैं।
तो अंत में हमें y>0 तक जांचना होगा कि क्या [(y-1) % x == 0] या [(y) % x == 0] या [(y+1) % x == 0] या कोई समाधान मौजूद नहीं है।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int main() {
int x = 2, y = 19;
// y की विभाज्यता की जांच करना जब तक y>0
while (y > 0) {
// यदि y-1, x से विभाज्य है।
if ((y - 1) % x == 0)
y = (y - 1) / x;
// यदि y, x से विभाज्य है।
else if (y % x == 0)
y = y / x;
// यदि y+1, x से विभाज्य है।
else if ((y + 1) % x == 0)
y = (y + 1) / x;
// यदि कोई शर्त पूरी नहीं होती तो इसका मतलब
// y को x की घात के पदों में प्रस्तुत नहीं किया जा सकता।
else
break;
}
if(y == 0)
cout << "y को x की घात के पदों में प्रस्तुत किया जा सकता है।";
else
cout << "y को x की घात के पदों में प्रस्तुत नहीं किया जा सकता।";
return 0;
}
आउटपुट
y को x की घात के पदों में प्रस्तुत किया जा सकता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने चर्चा की कि कैसे जांचें कि क्या किसी संख्या का प्रस्तुतिकरण दूसरी संख्या की घात के पदों में संभव है। हमने वर्तमान, पूर्ववर्ती, और उत्तरवर्ती संख्या की y के साथ विभाज्यता की जांच करके इस समस्या को हल करने के एक सरल दृष्टिकोण पर चर्चा की।
हमने इस समस्या के लिए C++ प्रोग्राम पर भी चर्चा की जिसे हम C, Java, Python आदि प्रोग्रामिंग भाषाओं के साथ कर सकते हैं। आशा है कि आपको यह ट्यूटोरियल मददगार लगा होगा।