इस ट्यूटोरियल में, हम समीकरण को हल करने जा रहे हैं (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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।