#include<cstdio>
int a,b,c,x,y;
int exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return a;
}
int tmp=exgcd(b,a%b,y,x);
y-=a/b*x;
return tmp;
}
int main()
{
scanf("%d %d %d",&a,&b,&c);
int k=exgcd(a,b,x,y);
if(c%k)
{
printf("no solution!");
return 0;
}
x*=c/k;
y*=c/k;
printf("%d %d",x,y);
}
#include<cstdio>
int a,b,c,x,y;
int exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return a;
}
int tmp=exgcd(b,a%b,y,x);
y-=a/b*x;
return tmp;
}
int main()
{
scanf("%d %d %d",&a,&b,&c);
int k=exgcd(a,b,x,y);
if(c%k)
{
printf("no solution!");
return 0;
}
int p=b/k;
x=(x+p)*(c/k);
x=(x%p+p)%p;
y=(c-a*x)/b;
printf("%d %d",x,y);
}
扩展欧几里得求逆元
猜你喜欢
转载自blog.csdn.net/zsyz_ZZY/article/details/80269290
今日推荐
周排行