先用扩展欧几里德算法(辗转相除法?)求出a,b的最大公约数。
如果c不整除最大公约数,则一定没有整数解~
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
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 e=exgcd(b,a%b,x,y);
int kkz=x;x=y;y=kkz-a/b*y;
return e;
}
int main()
{
scanf("%d%d%d",&a,&b,&c);
int k=exgcd(a,b,x,y);
if(c%k) printf("Impossible\n");
else
{
k=c/k;
x*=k;y*=k;
printf("x=%d,y=%d\n",x,y);
}
return 0;
}