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

C++ में (a^b)%m खोजें जहां 'a' बहुत बड़ा है


इस ट्यूटोरियल में, हम समीकरण (ab) % m को हल करने जा रहे हैं जहां a एक बहुत बड़ी संख्या है।

समीकरण (ab) % m = (a % m) * (a % m) ... b_बार। हम a % m का मान ढूंढकर और फिर इसे b बार गुणा करके प्रॉब्लम को हल कर सकते हैं।

आइए प्रॉब्लम को हल करने के चरण देखें।

  • संख्याओं a, b, और m को इनिशियलाइज़ करें।

  • a % m ढूंढने के लिए एक फंक्शन लिखें।

    • संख्या को 0 से इनिशियलाइज़ करें।

    • स्ट्रिंग फॉर्मेट में नंबर पर पुनरावृति करें।

    • अंतिम अंकों को संख्या में जोड़ें।

    • संख्या को संख्या मॉड्यूलो m से अपडेट करें।

  • a % m का मान प्राप्त करें।

  • एक लूप लिखें जो b बार पुनरावृति करता है।

    • a % m को गुणा करें और परिणाम को m के साथ मॉड्यूलो करें।

  • परिणाम प्रिंट करें।

उदाहरण

आइए कोड देखें।

#include <bits/stdc++.h>
using namespace std;

unsigned int aModm(string str, unsigned int mod) {
    unsigned int number = 0;
    for (unsigned int i = 0; i < str.length(); i++) {
        number = number * 10 + (str[i] - '0');
        number %= mod;
    }
    return number;
}

unsigned int aPowerBmodM(string &a, unsigned int b, unsigned int m) {
    unsigned int a_mod_m_result = aModm(a, m);
    unsigned int final_result = 1;
    for (unsigned int i = 0; i < b; i++) {
        final_result = (final_result * a_mod_m_result) % m;
    }
    return final_result;
}

int main() {
    string a = "123456789012345678901234567890123";
    unsigned int b = 3, m = 7;
    cout << aPowerBmodM(a, b, m) << endl;
    return 0;
}

आउटपुट

यदि आप उपरोक्त प्रोग्राम को निष्पादित करते हैं, तो आपको निम्न परिणाम मिलेगा।

1

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में उल्लेख करें।


  1. - C++ में सरणी में निकटतम संख्या ज्ञात करें

    मान लीजिए हमारे पास n तत्वों की एक सरणी A है। और तत्व सॉर्टेड हैं। हमें दिए गए पूर्णांक के निकटतम मान को ढूंढना है। सरणी में डुप्लिकेट मान और ऋणात्मक संख्याएं हो सकती हैं। इसलिए यदि सरणी [2, 5, 6, 7, 8, 8, 9] की तरह है और लक्ष्य संख्या 4 है, तो निकटतम तत्व 5 है। हम दिए गए सरणी के माध्यम से पार करके

  1. - C++ प्रोग्राम: अंक d वाली संख्याएं ज्ञात करना

    मान लें हमारे पास एक अंक d है, और ऊपरी सीमा n है। हमें 0 से n की सीमा में वे सभी संख्याएं ज्ञात करनी हैं जिनमें d है। इसलिए यदि n = 20, और अंक 3 है, तो संख्याएं [3, 13] होंगी। इस समस्या को हल करने के लिए, हम प्रत्येक संख्या को स्ट्रिंग के रूप में लेंगे, फिर यदि अंक स्ट्रिंग में मौजूद है, तो संख्या

  1. - C++ में परिमेय संख्याओं का LCM खोजें

    यहां हम देखेंगे कि परिमेय संख्याओं का LCM कैसे निकाला जाता है। हमारे पास परिमेय संख्याओं की एक सूची है। मान लीजिए सूची है {2/7, 3/14, 5/3}, तो LCM 30/1 होगा। इस समस्या को हल करने के लिए, हमें सभी अंशों (numerators) का LCM और सभी हरों (denominators) का GCD निकालना होगा, फिर परिमेय संख्याओं का LCM होग