zoukankan      html  css  js  c++  java
  • F: Fabulous Race Between Tortoise And Rabbit 扩展欧几里得

    http://oj.jxust.edu.cn/contest/Problem?id=1561&pid=5

    题目描述

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

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

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

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

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

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

    输入

    输入包括5个整数x1y1v1v2L

    其中x1y1,x12109,y12109

    0<v1,v22109,0<L2109

     

    输出

    如果兔子赢得比赛,就在一行输出“win!”,下一行输出比赛持续的时间t

    。(t为整数)

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

    样例输入

    2 3 4 5 6
    

    样例输出

    win!
    5
    #include<iostream>
    #include<string.h>
    #include<math.h>
    #define max 0x3f3f3f3f
    #define ll long long
    using namespace std;
    ll x,y,r,s;
    void exgcd(ll a, ll b, ll &x, ll &y)    //拓展欧几里得算法
    {
        if(!b) 
            x = 1, y = 0;
        else
        {
            exgcd(b, a % b, y, x);
            y -= x * (a / b);
        }
    }
    
    ll gcd(ll a,ll b)
    {
        return b==0?a:gcd(b,a%b);
    }
    void TY(ll a,ll b,ll c)
    {
        r=gcd(a,b);
        s=b/r;
        exgcd(a,b,x,y);//得到x0
        x=x*c/r;  //得到x1
        x=(x%s+s)%s;  //得到最小正整数解
    }
    int main()
    {
        ll A,B,a,b,L;
        cin>>A>>B>>a>>b>>L;
        ll aa=b-a,bb=L,cc=A-B;
        if(aa<0)
        {
            aa=-1*aa;
            cc=-1*cc;
            //bb=-1*bb;
        }
        r=gcd(aa,bb);
        if(cc%r!=0)
            printf("lueluelue
    ");
        else
        {
            printf("win!
    ");
            TY(aa,bb,cc);
            printf("%lld
    ",x);
        }
        return 0;
    
    }
  • 相关阅读:
    8088汇编跳转和PSW状态字寄存器
    Delphi的函数指针
    服务器系统及软件常见漏洞
    TGraphiControl响应WM_MOUSEMOVE的过程(以TPaintBox为例)good
    两个奇怪的取地址符号
    把x指针指向的4个字节次序颠倒过来
    DELPHI中的消息处理机制(三种消息处理方法的比较,如何截断消息)
    探索C++的底层机制
    setprecision、fixed、showpoint的用法总结(经典!!超经典!!)
    段寄存器和8种地址寻址方式
  • 原文地址:https://www.cnblogs.com/-citywall123/p/10811824.html
Copyright © 2011-2022 走看看