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

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

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

समीकरण (a b )%m=(a%m)*(a%m)...b_times. हम समस्या का समाधान a%m का मान ज्ञात करके और फिर उसे b गुना करके कर सकते हैं।

आइए समस्या को हल करने के लिए चरणों को देखें।

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

  • a%m को खोजने के लिए एक फ़ंक्शन लिखें।

    • संख्या को 0 से प्रारंभ करें।

    • स्ट्रिंग प्रारूप में संख्या पर पुनरावृति करें।

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

    • नंबर के साथ नंबर अपडेट करें उन्हें मॉड्यूल करें।

  • %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. सी ++ में सरणी में निकटतम संख्या पाएं

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

  1. वह संख्या ज्ञात कीजिए जिसमें C++ में अंक d है

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

  1. C++ में परिमेय संख्या का LCM ज्ञात कीजिए

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