#includeusing namespace std; int x(int a,int b){ int n; if (a != 0 && b != 0) { do { n = a % b; a = b; b = n; } while (n); return a; } else return -1; return 0; } int M(int a, int b) { int t; if (x(a, b) == 0&&x(a,b)==-1) { cout << "无解" << endl; return -1; } else { t = 1; while ((a * t) % b != 1) t++; return t; } } int main() { int a, m; cin >> a >> m; int x = M(a, m); cout << x; }
2.
int mozhishu(int x, int y, int n) {
int a = 1;
if (y == 0)
return 1;
for (; y > 0; y /= 2)
{
a = (a * x) % n;
x = (x * x) % n;
}
return a;
}
int main() {
int x, y, m;
cin >> x >> y >> m;
x = mozhishu(x, y, m);
cout << x;
return 0;
}
3.设p = 23和a = 5,使用费尔马小定理计算a^{2020} mod p?
2020=22*91+18,又5^22mod23=1。则5^2020mod23=5^18mod23=64.使用欧拉定理计算2^{100000} mod 55
φ(55)=40,即2^40mod55=1.2^100000mod55=2^40*2500mod55=1
5.手动计算7^{1000}的最后两个数位等于什么?
7^1=7 7^2=49 7^3=343 7^4=2401 7^5=16807 7^6=117649 7^7=823543 7^8=5,764,801 可见,七的n次方的后两位数分别为07/49/43/01顺序循环 7^1000次方,1000/4为250,没有余数,因此7^1000次方后两位数为01



