HDU 2669 Romantic[扩展欧几里德]

题意: 输入两个非负整数a, b ,找到非负的整数 X , Y 使其满足 X*a + Y*b = 1.

#include <stdio.h>
#include <string.h>
void extend_gcd(int a, int b, int& d, int& x, int& y)
{
    if(!b)
    {
        d = a;
        x = 1;
        y = 0;
    }
    else 
    {
        extend_gcd(b, a%b, d, y, x);
        y -= x*(a/b);
    }
}
int main()
{
    int a, b, x, y, d;
    while(scanf("%d %d",&a, &b)!=EOF)
    {
        extend_gcd(a, b, d, x, y);
        if(d != 1)
        {
            printf("sorry\n");
        }
        else 
        {
            while(x < 0)
            {
                x += b;
                y -= a;
            }
            printf("%d %d\n",x,y);
        }
    }
    return 0;
}

 

posted @ 2012-11-01 23:05  'wind  阅读(188)  评论(0编辑  收藏  举报