Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में किसी संख्या को दूसरी संख्या की घातों के रूप में प्रस्तुत करना


किसी संख्या को दूसरी संख्या की घात में प्रस्तुत करने की समस्या पर चर्चा करें। हमें दो संख्याएं, 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 आदि प्रोग्रामिंग भाषाओं के साथ कर सकते हैं। आशा है कि आपको यह ट्यूटोरियल मददगार लगा होगा।

  1. - C++ में मितव्ययी संख्या (Frugal Number)

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया गया है। हमारा कार्य यह जांचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या (FRUGAL NUMBER) − एक संख्या जिसके अंकों की संख्या उस संख्या के अभाज्य गुणनखंडन में अंकों की संख्या से सख्ती से अधिक है। उदाहरण &

  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

    एक पेंटाटोप संख्या को पास्कल के त्रिभुज में पांचवीं संख्या के रूप में वर्णित किया गया है। अब, चूंकि यह पांचवीं संख्या है, इसका मतलब है कि पास्कल के त्रिभुज में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है जो पास्कल के त्रिभुज की चौथी पंक्ति है। तो, इस

  1. - C++ में दी गई संख्या का बाइनरी प्रतिनिधित्व

    बाइनरी संख्या बाइनरी संख्या केवल 0 और 1 अंकों से बनी होती है। पुनरावर्ती विधि पुनरावृत्ति का उपयोग करके संख्या को बाइनरी में बदलें: 1, तो संख्या/2 के साथ पुनरावर्ती कॉल करें वापस आते समय संख्या % 2 प्रिंट करें उदाहरण कोड 1) toBinary(number / 2); cout << number % 2; } int ma