第一题
#include<iostream>
using namespace std;
int gcd(int x, int y)
{
int n;
while (y != 0)
{
n = y;
y = x % y;
x = n;
}
return n;
}
int egcd(int x, int y)
{
if (gcd(x, y) != 1)
{
cout << "该值无解,在模m的情况下a无乘法逆元";
return 999;
}
else
{
int r0 = 1, s1 = 1, r1 = 0, s0 = 0, q, n=0;
while (y)
{
q = x / y;
n = x;
x = y;
y = n % y;
n = r0;
r0 = r1; r1 = n - q * r1;
n = s0; s0 = s1;
s1 = n - q * s1;
}
return r0;
}
}
int main()
{
int a, m, c;
cin >> a >> m;
c= egcd(a, m);
cout << c;
return 0;
}
第二题
#include<iostream>
#include<cmath>
using namespace std;
unsigned int modIN(int x, int y, int m)
{
int r = 1;
while (y > 0)
{
if ((y&1)==0)
{
r = (r * x) % m;
}
y = y / 2;
x = (x * x) % m;
}
return r;
}
int main()
{
int x, y, m, n=0;
cin >> x>>y>>m;
n = modIN(x, y, m);
cout << n;
return 0;
}