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

C++ में gcd(a^n, c) ढूंढें जहां a, n और c 1 से 10^9 तक भिन्न हो सकते हैं


हमें दो संख्याओं का GCD ढूंढना है जिनमें से एक संख्या (10⁹ ^ 10⁹) जितनी बड़ी हो सकती है, जिसे लॉन्ग या किसी अन्य डेटा टाइप में स्टोर नहीं किया जा सकता। तो यदि संख्याएं a = 10248585, n = 1000000, b = 12564 हैं, तो GCD(a^n, b) का परिणाम 9 होगा।

चूंकि संख्याएं बहुत लंबी हैं, हम यूक्लिडियन एल्गोरिदम का उपयोग नहीं कर सकते। हमें O(log n) जटिलता के साथ मॉड्यूलर एक्सपोनेंशिएशन का उपयोग करना होगा।

उदाहरण

#include 
#include 
using namespace std;

long long power(long long a, long long n, long long b) {
    long long res = 1;
    a = a % b;
    while (n > 0) {
        if (n & 1)
            res = (res*a) % b;
        n = n>>1;
        a = (a*a) % b;
    }
    return res;
}

long long bigGCD(long long a, long long n, long long b) {
    if (a % b == 0)
        return b;
    long long exp_mod = power(a, n, b);
    return __gcd(exp_mod, b);
}

int main() {
    long long a = 10248585, n = 1000000, b = 12564;
    cout << "GCD value is: " << bigGCD(a, n,b);
}

आउटपुट

GCD value is: 9

  1. - C++ प्रोग्राम: n संख्याओं का GCD और LCM ज्ञात करना

    यह n संख्याओं का GCD और LCM ज्ञात करने का कोड है। दो या अधिक पूर्णांकों का GCD या महत्तम समापवर्तक, जो सभी शून्य नहीं हैं, वह सबसे बड़ा धनात्मक पूर्णांक है जो प्रत्येक पूर्णांक को विभाजित करता है। GCD को महत्तम समापवर्तक के रूप में भी जाना जाता है। दो संख्याओं का लघुत्तम समापवर्त्य (LCM) वह सबसे छो

  1. - C++ प्रोग्राम: GCD (महत्तम समापवर्तक) खोजें

    परिचयदो संख्याओं का महत्तम समापवर्तक (GCD) वह सबसे बड़ी संख्या है जो दोनों को विभाजित करती है। उदाहरण के लिए: मान लें हमारे पास दो संख्याएं हैं 45 और 27। 45 = 5 * 3 * 3 27 = 3 * 3 * 3 इसलिए, 45 और 27 का GCD 9 है। उदाहरण 1 (यूक्लिडियन एल्गोरिदम)#include <iostream> using namespace std; int gcd(

  1. - वर्तमान C या C++ स्टैंडर्ड डॉक्यूमेंट्स कहां मिल सकते हैं?

    आप वर्तमान C स्टैंडर्ड डॉक्यूमेंट्स ANSI वेब स्टोर पर पा सकते हैं। https://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2FISO%2FIEC+9899-2012 आप वर्तमान C++ स्टैंडर्ड डॉक्यूमेंट्स खरीदने के लिए ISO C++ वेबसाइट पर पा सकते हैं: https://www.iso.org/standard/68564.html ISO C++ स्टैंडर्ड का वर्किंग ड्