模指数运算函数
写一个模指数运算函数Mod_Exp,输入a、b和m,输出a^b mod m,即a的b次方模m。
#include <iostream>
using namespace std;
int Mod_Exp(int a, int b, int m) {
if (b == 0)return 1;
int result;
result = Mod_Exp(a, b / 2, m);
if (b % 1 == 0)return result * result % m;
else return a * result * result % m;
}
int main() {
int a, b, m;
cin >> a >> b>>m;
cout << Mod_Exp(a, b, m);
}
乘法逆元函数
写一个求乘法逆元的函数Mul_Inverse,输入a和m,求a模m的乘法逆元。
int Mul_Inverse(int a, int m)
{
int temp, tempx, tempy;
int tempm = m;
int r0 = 1, s0 = 0, r1 = 0, s1 = 1;
RS rs;
while (m)
{
int p = a / m;
temp = m;
m = a % m;
a = temp;
int tempr0 = r0, temps0 = s0;
r0 = r1, s0 = s1;
r1 = tempr0 - p * r1;
s1 = temps0 - p * s1;
}
rs.r = r0, rs.s = s0, rs.d = a;
while (rs.r < 0)
rs.r += tempm;
if (rs.d == 1)
return rs.r;
else
return -1;
}