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

C++ में सुपर पॉव


मान लीजिए हमें a^b mod 1337 की गणना करनी है जहां a एक धनात्मक पूर्णांक है और b एक अत्यंत बड़ा धनात्मक पूर्णांक है जो एक सरणी के रूप में दिया गया है।

उदाहरण के लिए, यदि a = 2 और b = [1,0] तो आउटपुट 1024 होगा।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • powerMod() विधि परिभाषित करें जो आधार और घात लेती है
  • m := 1337, ret := 1
  • जब तक घात 0 नहीं है
    • यदि घात विषम है, तो ret := ret * आधार mod m
    • आधार := आधार^2 mod m
    • घात := घात / 2
  • ret लौटाएं
  • superPower() परिभाषित करें, यह a और b लेता है
  • यदि b का आकार = 0, तो 1 लौटाएं
  • last := b का अंतिम तत्व
  • b से अंतिम तत्व हटाएं
  • (powerMod(superpower(a, b), 10) * powerMod(a, last)) mod 1337 लौटाएं

उदाहरण (C++)

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; typedef long long int lli; class Solution {    public:    int powerMod(lli base, lli power){       lli mod = 1337;       lli ret = 1;       while(power){          if(power & 1) ret = (ret * base) % mod;          base = (base * base) % mod;          power >>= 1;       }       return ret;    }    int superPow(int a, vector<int>& b) {       if(b.size() == 0) return 1;       int last = b.back();       b.pop_back();       return (powerMod(superPow(a, b), 10) * powerMod(a, last)) % 1337;    } }; main(){    Solution ob;    vector<int> v = {1,0};    cout << (ob.superPow(2, v)); }

इनपुट

2 [1,0]

आउटपुट

1024

  1. - C++ में reference_wrapper

    C++ में reference_wrapper एक क्लास टेम्पलेट है जो एक रेफरेंस को T टाइप के कॉपी-कंस्ट्रक्टिबल और कॉपी-असाइन करने योग्य ऑब्जेक्ट में लपेटने में मदद करता है। std::reference_wrapper के इंस्टेंस मूलतः ऑब्जेक्ट होते हैं, लेकिन उन्हें T& में परिवर्तित किया जा सकता है। इसलिए हम उन्हें उन फंक्शन्स के आर्

  1. - C++ का उपयोग करके पावर (pow) फंक्शन लिखें

    पावर फंक्शन का उपयोग दो संख्याओं बेस और एक्सपोनेंट दिए जाने पर पावर खोजने के लिए किया जाता है। परिणाम बेस का एक्सपोनेंट की पावर होता है। एक उदाहरण जो इसे प्रदर्शित करता है वह निम्नलिखिक है − बेस = 2 एक्सपोनेंट = 5 2^5 = 32 इसलिए, 2 की पावर 5 है 32। C++ में पावर फंक्शन को प्रदर्शित करने वाला एक

  1. - C++ में एनकैप्सुलेशन (Encapsulation)

    एनकैप्सुलेशन क्या है? डेटा और उस डेटा को मैनिपुलेट करने वाले मेथड्स को एक ही घटक (क्लास) में बांधना और बाहरी हस्तक्षेप से बचाना। डेटा छिपाने (data hiding) की ओर ले जाता है। C++ में कार्यान्वयन क्लासेस (उपयोगकर्ता-परिभाषित डेटा प्रकार) का उपयोग करके। क्लास डेटा सदस्यों और मेथड्स को एक साथ बांधती है