Romantic(hdu 2669)

Romantic
擴展歐幾里德算法。a*x1+b*y1=1 ;
代碼:
#include<iostream>  
#include<cstdio>  
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;  
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章