在 C++ 中求 (a^b)%m,其中 ‘a’ 非常大
在本教程中,我們將解決方程 (ab)%m,其中 a 是一個非常大的數字。
方程 (ab)%m=(a%m)*(a%m)...b_times。我們可以透過找到 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
結論
如果您在本教程中有任何疑問,請在評論區提出。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP