zoukankan      html  css  js  c++  java
  • bzoj1477: 青蛙的约会

    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
    ");
        else 
        {
            LL X=x*(K/d);
            X=(X%(B/d)+B/d)%(B/d);
            printf("%lld
    ",X);
        }
        return 0;
    }
  • 相关阅读:
    希尔排序
    快速排序
    归并排序
    插入排序
    简单选择排序
    冒泡排序
    算法之时间复杂度和空间复杂度
    数据结构与算法思维导图
    rootfs根文件系统
    kernel 2.6.35.7向S5PV210移植
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/8425569.html
Copyright © 2011-2022 走看看