由拓展欧几里得可以得到 ax+by==1
因为题目说保证有解所以a和b没有大于1的同因子,即a和b互质所以直接用拓展欧几里得求解即可。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int ex_gcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1;
y=0;
return a;
}
int r=ex_gcd(b,a%b,x,y);
int t=x;
x=y;
y=t-a/b*y;
return r;
}
int main()
{
int a,b,x,y,x0,y0;
scanf("%d%d",&a,&b);
int t=ex_gcd(a,b,x,y);
while(x<0)
{
x+=b;
}
printf("%d",x);
return 0;
}