1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#include<cmath> using namespace std; typedef long long ll; int (int a,int b,int &x,int &y){ if(b==0) {x=1;y=0;return a;} int c=exgcd(b,a%b,x,y); int z=x;x=y;y=z-y*(a/b); return c; } int main(){ int a,b,c; while(~scanf("%d%d%d",&a,&b,&c)){ if(a==b&&b==c&&a==0) break; int x,y; int gcd=exgcd(a,b,x,y); int mod=b/gcd; int t=c/gcd; int x1=(t*x%mod+mod)%mod; int y1=(c-a*x1)/b; int ans1=abs(x1)+abs(y1); mod=a/gcd; int y2=(t*y%mod+mod)%mod; int x2=(c-y2*b)/a; int ans2=abs(x2)+abs(y2); if(ans1>ans2){ printf("%d %dn",abs(x2),abs(y2)); } else printf("%d %dn",abs(x1),abs(y1)); } }
|
近期评论