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

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


मान लीजिए कि हमें a^b mod 1337 की गणना करनी है जहां a एक धनात्मक पूर्णांक है और b एक सरणी के रूप में दिया गया एक अत्यंत बड़ा धनात्मक पूर्णांक है। तो अगर a =2 और b =[1,0] तो आउटपुट 1024

. होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • पावरमॉड () विधि को परिभाषित करें जो आधार और शक्ति लेती है

  • मी :=1337, सेवानिवृत्त :=1

  • जबकि पावर 0 नहीं है

    • यदि शक्ति विषम है, तो रिट :=रिट * बेस मॉड m

    • आधार:=आधार^2 मॉड एम

    • शक्ति :=शक्ति/2

  • वापसी रिट

  • सुपरपावर () को परिभाषित करें, इसमें ए और बी लगते हैं

  • अगर b =0 का आकार है, तो 1

    . लौटाएं
  • अंतिम :=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 एक क्लास टेम्प्लेट है जो किसी संदर्भ को कॉपी कंस्ट्रक्टिव और कॉपी असाइन करने योग्य ऑब्जेक्ट टाइप T में लपेटकर मदद करता है। std::reference_wrapper के उदाहरण मूल रूप से ऑब्जेक्ट हैं, लेकिन उन्हें T&में बदला जा सकता है। इसलिए हम उन फ़ंक्शंस के साथ तर्क के रूप में उपयोग कर सकते

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

    पावर फ़ंक्शन का उपयोग आधार और घातांक दो संख्याओं को दी गई घात ज्ञात करने के लिए किया जाता है। परिणाम घातांक की शक्ति के लिए उठाया गया आधार है। इसे प्रदर्शित करने वाला एक उदाहरण इस प्रकार है - Base = 2 Exponent = 5 2^5 = 32 Hence, 2 raised to the power 5 is 32. एक प्रोग्राम जो C++ में पावर फंक्शन

  1. सी++ में इनकैप्सुलेशन

    Encapsulation डेटा और विधियों को एक साथ लाता है जो डेटा को एक घटक में हेरफेर करता है और उन्हें बाहरी हस्तक्षेप से बचाता है। संक्षेप में, एनकैप्सुलेशन में डेटा के साथ-साथ डेटा का उपयोग करने वाले कार्यों को बंडल करना शामिल है। डेटा इनकैप्सुलेशन डेटा छिपाने की बहुत महत्वपूर्ण अवधारणा की ओर ले जाता है।