hdu 2669 Romantic 扩展欧几里得求线性方程模板题

来源:互联网 发布:mac中文件的绝对路径 编辑:程序博客网 时间:2024/06/06 09:42

a,b互质,所以gcd=1

即求ax+by=1,用扩展gcd直接求

#include <iostream>#include <cstdio>#define LL long longusing namespace std;LL x,y;LL exgcd(int a,int b){    if(b==0)    {        x=1;        y=0;        return a;    }    LL r=exgcd(b,a%b);    LL t=x;    x=y;    y=t-a/b*y;    return r;}int main(){    LL A,B;    while(scanf("%lld %lld",&A,&B)!=EOF)    {        LL r=exgcd(A,B);        cout<<x<<" "<<y<<endl;        if(r==1)        {            while(x<0)//找x>0,且x最小的            {                x+=B;                y-=A;            }            cout<<x<<" "<<y<<endl;//也可以先找到最小正x,再用1-A*x)/b来算        }        /*         if(r==1)      {           x=(x%B+B)%B;  //x>0,且最小         y=(1-A*x)/B;          cout<<x<<" "<<y<<endl;    }         */        else cout<<"sorry"<<endl;    }    return 0;}


0 0
原创粉丝点击