Romantic(hdu 2669)

Romantic
扩展欧几里德算法。a*x1+b*y1=1 ;
代码:
#include  
#include  
using namespace std;  
   
long long exgcd(long long a,long long b,long long& x,long long& y)  
{  
    if(b==0)  
    {  
        x=1,y=0;  
        return a;  
    }  
    long long g = exgcd(b,a%b,y,x);  
    y -= a/b*x;  
    return g;  
}  
  
int main()  
{  
    long long a,b,x1,y1;  
    while(cin >> a >> b)  
    {  
        long long c=1;
        long long d=exgcd(a,b,x1,y1);
        if(c%d!=0) 
            printf("sorry\n");  
        else  
        {  
            x1=x1*c/d;
            x1=(x1%(b/d)+(b/d))%(b/d);
            y1=(c-a*x1)/b;
            printf("%I64d %I64d\n",x1,y1);  
        }  
    }  
    return 0;  
}  

你可能感兴趣的:(Extgcd)