इस ट्यूटोरियल में, हम समीकरण (ab) % m को हल करने जा रहे हैं जहां a एक बहुत बड़ी संख्या है।
समीकरण (ab) % m = (a % m) * (a % m) ... b_बार। हम a % m का मान ढूंढकर और फिर इसे b बार गुणा करके प्रॉब्लम को हल कर सकते हैं।
आइए प्रॉब्लम को हल करने के चरण देखें।
संख्याओं a, b, और m को इनिशियलाइज़ करें।
a % m ढूंढने के लिए एक फंक्शन लिखें।
संख्या को 0 से इनिशियलाइज़ करें।
स्ट्रिंग फॉर्मेट में नंबर पर पुनरावृति करें।
अंतिम अंकों को संख्या में जोड़ें।
संख्या को संख्या मॉड्यूलो m से अपडेट करें।
a % 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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में उल्लेख करें।