题目情境#
题目描述
给定 ,求解同余方程 。
说明/提示
本页为算法笔记。
算法解析:#
exgcd 求逆元: 即 。用扩展欧几里得求 的特解,若 能被 整除则 为解,否则无解。当 时即求 的乘法逆元。

时间复杂度:
C++代码实现#
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int exgcd(int a,int b,int &x,int &y){
if(b == 0){x = 1, y = 0; return a;}
int x1, y1, d;
d = exgcd(b, a%b, x1, y1);
x = y1, y = x1-a/b*y1;
return d;
}
int main(){
int a, b, m, x, y;
scanf("%d%d%d", &a, &b, &m);
int d = exgcd(a, m, x, y);
if(b%d == 0)
printf("%d", 1ll*x*b/d%m);
else puts("none");
return 0;
}c