数论知识:
求关于x的同余方程
a
x
≡
1
(
m
o
d
b
)
\ a x \equiv 1 \pmod {b}
ax≡1(modb) 的最小正整数解。
注意:
(
a
∗
x
)
%
m
o
d
=
(
(
a
%
m
o
d
)
∗
x
)
%
m
o
d
\ (a *x) \% \mod = (( a\ \%\mod) * x) \% {\mod}
(a∗x)%mod=((a %mod)∗x)%mod
输入:
a
b
\ {a} \ {b}
a b 以空格分开
输出
x
\ x {}
x
如
输入
3 10
输出
7
#include <bits/stdc++.h>
using namespace std;
long long work(long long a,long long b)//求同余方程的函数
{
if((a-1)%b==0)
return 1;//不再递归的条件
if(a>b)
a%=b;//一定要有,不然会一直运行这个
long long c=b/a;
//return work(a,b%a)+c*(work(a,b%a)*a-1)/(b%a);
return (work(a,b%a)*(a*c+b%a)-c)/(b%a); //上面的return化简
}
int main()
{
long long a,b;
cin >> a >> b;
cout << work(a,b) << endl ;
return 0;
}