Trong hướng dẫn này, chúng ta sẽ giải phương trình (a b )% m trong đó a là một số rất lớn.
Phương trình (a b )% m =(a% m) * (a% m) ... b_times. Chúng ta có thể giải quyết vấn đề bằng cách tìm giá trị của a% m rồi nhân nó với b.
Hãy xem các bước để giải quyết vấn đề.
-
Khởi tạo các số a, b và m.
-
Viết một hàm để tìm a% m.
-
Khởi tạo số bằng 0.
-
Lặp lại số ở định dạng chuỗi.
-
Thêm các chữ số cuối cùng vào số.
-
Cập nhật số với mô-đun số cho chúng.
-
-
Nhận giá trị của% m.
-
Viết một vòng lặp lặp lại b lần.
-
Nhân a% m và modulo kết quả với m.
-
-
In kết quả.
Ví dụ
Hãy xem 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; }
Đầu ra
Nếu bạn thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.
1
Kết luận
Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.