• Justoj Fabulous Race Between Tortoise And Rabbit 拓展欧几里得 技巧


    Fabulous Race Between Tortoise And Rabbit

    时间限制: 1 s      内存限制: 128 MB     

    提交 我的状态

    题目描述

            经历了上次的惨败,兔子一直心怀不满,又策划了一场比赛,但这次不再是简单的跑步比赛了,他们将在一个神奇的场地进行一次奇妙的比赛:

            这个场地是线性的。它拥有一种神奇的功能,表面看起来它只有L米长,其实是无限的!——当你跑到尽头再往前行进时你会发现,你将从另一端跑出来!

    兔子制定的游戏规则很简单:正方向为从右往左,兔子和乌龟同时在不同位置开始朝正方向跑,如果兔子在某一时刻与乌龟相遇(在同一个位置)那么乌龟就输,比赛结束。

    乌龟沉思了一会儿,要求增加规则:即兔子和乌龟的速度在整个比赛过程中必须都是不变的。

    懒惰又自大的兔子以为这次无论如何都不会输掉比赛,一心只想快点赢,想都没想随口就答应了。

    现在对于给定的场地长L,兔子和乌龟的位置x和y,以及兔子和乌龟的速度v1,v2。要你判断兔子是不是会赢呢,如果兔子赢得比赛,就输出“win!”和比赛进行的时间t,如果兔子输掉了比赛,就对它发出嘲讽,输出“lueluelue”

    输入

    输入包括5个整数x1,y1,v1,v2,Lx1,y1,v1,v2,L其中x1≠y1,x1≤2∗109,y1≤2∗109x1≠y1,x1≤2∗109,y1≤2∗109

    0<v1,v2≤2∗109,0<L≤2∗1090<v1,v2≤2∗109,0<L≤2∗109

    输出

    如果兔子赢得比赛,就在一行输出“win!”,下一行输出比赛持续的时间tt。(t为整数)

    如果兔子输掉比赛(即两者永远碰不到)就输出 “lueluelue” 对其嘲讽。

    样例输入

    2 3 4 5 6
    

    样例输出

    win!
    5

    题解:A,B,a,b,L分别为兔子和乌龟的起始点、速度、场地长度,x为时间,y为相差的圈数,由公式{color{Red} A+a*x-B-b*x=L*y ==> (b-a)*x+L*y=A-B.}再进行拓展欧几里得运算,得到x,y(b-a为负数的时候要互换b、a和A、B的值,暂时没搞明白为啥)

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    #define ll long long
    using namespace std;
    void exgcd(ll a,ll b,ll &gcd,ll &x,ll &y){
            if(!b){
                    gcd=a;x=1;y=0;
            }else{
                    exgcd(b,a%b,gcd,x,y);
                    ll tmp=x;
                    x=y;
                    y=tmp-a/b*y;
            }
    }
    int main(){
            int T;
            ll a,b,A,B,x,y,gcd,ans,t,l,p,k,cha,xx,yy;
            scanf("%lld%lld%lld%lld%lld",&A,&B,&a,&b,&l);
            cha=A-B;
            if(a>b)//b-a必须为正值
                    swap(a,b),cha*=-1;
            exgcd(b-a,l,gcd,x,y);
            //A+a*x-B-b*x=L*y ==> (b-a)*x+L*y=A-B.
            if(cha%gcd){
                    printf("lueluelue
    ");
            }else{
                    p=l/gcd;
                    k=cha/gcd;
                    x=(x*k%p+p)%p;
                    printf("win!
    ");
                    printf("%lld
    ",x);
            }
            return 0;
    }
    
  • 相关阅读:
    C#学习记录(一)
    C#学习记录(五)第一次上机实验
    C#学习记录(四)
    C#学习记录(三)
    统计代码行数
    夜深了
    写在岁末的烟花易冷
    c语言|博客作业02
    c语言I博客作业03
    设计模式之模板方法模式
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/10811972.html
Copyright © 2020-2023  润新知