码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj1477: 青蛙的约会

时间:2018-02-07 11:59:26      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:print   iostream   阴影   int   div   1.5   algo   ret   oss   

exgcd的题。(给我留下巨大心理阴影的gcd啊,你又断了我的连A纪录。。)

就是推柿子

(av-bv)*x-(L*y+(bp-ap+L)%L)=0

(av-bv)*x-L*y=(bp-ap+L)%L

然后就gcd。

有个神奇的问题,B不能是负的?我把B=-L改成L就过了?

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;

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

int main()
{
    LL ap,bp,av,bv,L;
    scanf("%lld%lld%lld%lld%lld",&ap,&bp,&av,&bv,&L);
    if(av<bv){swap(ap,bp);swap(av,bv);}
    
    LL A=av-bv;
    LL B=L;
    LL K=(bp-ap+L)%L;
    
    LL x,y;
    LL d=exgcd(A,B,x,y);
    
    if(K%d!=0)printf("Impossible\n");
    else 
    {
        LL X=x*(K/d);
        X=(X%(B/d)+B/d)%(B/d);
        printf("%lld\n",X);
    }
    return 0;
}

bzoj1477: 青蛙的约会

标签:print   iostream   阴影   int   div   1.5   algo   ret   oss   

原文地址:https://www.cnblogs.com/AKCqhzdy/p/8425569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!