#include<cmath> #include<cstring> #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; int ex_gcd(int a,int b,int &x,int &y) { int d; if(b==0) {x=1; y=0; return a;} d=ex_gcd(b,a%b,y,x); y-=a/b*x; return d; } int main() { int a,b,c,x,y,d; while(!0) { scanf("%d%d%d",&a,&b,&c); if(a==0&&b==0&&c==0) break; d=ex_gcd(a,b,x,y); if(c%d!=0) printf("no solution\n"); else { int x1=((c/d*x)%(b/d)+(b/d))%(b/d); //找x的最小整数解 int y1=(c-a*x1)/b; int y2=((c/d*y)%(a/d)+(a/d))%(a/d); //找y的最小整数解 int x2=(c-b*y2)/a; x1=abs(x1); y1=abs(y1); x2=abs(x2); y2=abs(y2); if(x1+y1<x2+y2) printf("%d %d\n",x1,y1); else if(x1+y1==x2+y2) { if(x1*a+y1*b<x2*a+y2*b) printf("%d %d\n",x1,y1); else printf("%d %d\n",x2,y2); } else printf("%d %d\n",x2,y2); } } return 0; }
POJ-2142 The Balance(扩展欧几里德算法)
猜你喜欢
转载自blog.csdn.net/xigongdali/article/details/80042405
今日推荐
周排行