【poj1061-青蛙的约会】拓展欧几里得-不定方程

【poj1061-青蛙的约会】拓展欧几里得-不定方程

http://poj.org/problem?id=1061

题意:裸题。注意负数。

//poj1061
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;

typedef long long LL;
LL tx,ty;

LL exgcd(LL a,LL b)
{
    if(b==0) {tx=1,ty=0;return a;}
    LL d=exgcd(b,a%b);
    LL x=ty,y=tx-(a/b)*ty;
    tx=x;ty=y;
    return d;
}

int main()
{
    // freopen("a.in","r",stdin);
    // freopen("a.out","w",stdout);
    LL x,y,m,n,l;
    scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l);
    LL g=exgcd(m-n,l);
    // printf("g = %I64d\n",g);
    if((y-x)%g!=0) printf("Impossible\n");
    else {
        LL rx=tx*(y-x)/g;
        LL r=l/g;
        if(r<0) r*=-1;
        rx=(rx%r+r)%r;
        printf("%I64d\n",rx);
    }
    return 0;
}
View Code

 

posted @ 2016-02-02 20:49 拦路雨偏似雪花 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值