首页 > 其他 > 详细

extended_gcd(扩展欧几里德算法) 青蛙的约会

时间:2014-08-07 09:43:09      阅读:443      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
#include <math.h>
long long gcd(long long x,long long y)
{
    if(y==0)
    {
        return x;
    }
    return gcd(y,x%y);
}
void extended_gcd(long long a,long long b,long long &x,long long &y)
{
    long long t;
    if(b==0)
    {
        x = 1;
        y = 0;
        return;
    }
    extended_gcd(b,a%b,x,y);
    t=x;
    x = y;
    y = t- a/b*y;
    return;
}

int main( )
{
    long long x, y, m, n, l;
    long long a,b,c,d,p,q;
    long long t;
    while(scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l)!= EOF )
    {
        a= n-m;
        b=l;
        c= x-y;
        d= gcd(a,b);
        if(c%d!=0)
        {
            puts( "Impossible" );
            continue;
        }
        a/= d,b/= d,c/= d;
        extended_gcd(a,b,p,q);
        p*= c;
        t= p%b;
        while(t<0)
        {
            t+= b;
        }
        printf("%lld\n",t);
    }
    return 0;
}

 

extended_gcd(扩展欧几里德算法) 青蛙的约会,布布扣,bubuko.com

extended_gcd(扩展欧几里德算法) 青蛙的约会

原文:http://www.cnblogs.com/yangyongqian/p/3896286.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!