এই টিউটোরিয়ালে, আমরা সমীকরণটি সমাধান করতে যাচ্ছি (a b )%m যেখানে a একটি খুব বড় সংখ্যা।
সমীকরণ (a b )%m=(a%m)*(a%m)...b_times আমরা a%m এর মান বের করে এবং তারপর এটিকে b. গুণ করে সমস্যার সমাধান করতে পারি।
আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷
৷-
সংখ্যাগুলি a, b, এবং m শুরু করুন।
-
a%m.
খুঁজতে একটি ফাংশন লিখুন-
0 দিয়ে সংখ্যাটি শুরু করুন।
-
স্ট্রিং বিন্যাসে সংখ্যার উপর পুনরাবৃত্তি করুন।
-
সংখ্যায় শেষ সংখ্যা যোগ করুন।
-
নম্বর মডিউল দিয়ে নম্বর আপডেট করুন।
-
-
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
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।