HDU

来源:互联网 发布:我知你好 未再91baby 编辑:程序博客网 时间:2024/06/05 00:19
题目描述:

点击打开链接

题意很裸,直接的扩展欧几里德定理的应用,写这题只是为了记住通解的形式x=x0+(b/gcd(a,b))*t,y=y0-(a/gcd(a,b))*t。

AC代码:

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<stack>#include<queue>#include<algorithm>using namespace std;long long a,b;long long extgcd(long long a,long long b,long long &x,long long &y)//扩展欧几里德{    long long d=a;    if (b!=0)    {        d=extgcd(b,a%b,y,x);        y-=(a/b)*x;    }    else    {        x=1;        y=0;    }    return d;}int main(){    while(scanf("%I64d%I64d",&a,&b)!=EOF)    {        long long x,y;        long long d=extgcd(a,b,x,y);        if (d!=1) printf("sorry\n");        else        {            while(x<=0)            {                x=x+b;                y=y-a;            }            printf("%I64d %I64d\n",x,y);        }    }    return 0;}