https://www.luogu.org/problemnew/show/P1516#sub

题意还是非常好理解的.....

假如这不是一道环形的跑道而是一条直线,你会怎样做呢?

如果是我就会列一个方程,像

$$x+m \times k = y+n \times k $$

求出方程解得k值。

然而这是一个环形跑道,也就有了取模的问题,然而我们只需要稍微改变一下方程

$$x + m \times k = y + n \times k + l \times z [z \in \mathbb{Z} ]$$

z表示被%掉了多少圈,我们试着两边转移一下

$$(x-y)+(m-n) \times k = l \times z$$

我们定义$a=(x-y),b=(m-n)$

$$a +b \times k= l \times z $$

$$ bk+lz=a $$

那么我们的任务就变成了解出这个二元一次方程了。

首先判断$ a是否整除gcd(b,l) $,不整除则无解,否则有解的话就可以用扩展欧几里得求得解。

#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
#define LL long long
LL xx,yy,n,m,x,y,a,b,l,r;
LL gcd(LL a,LL b)
{
return !b?a:gcd(b,a%b);
}
LL exgcd(LL a,LL b,LL &x,LL &y)
{
return !b?(x=,y=):(exgcd(b,a%b,y,x),y-=a/b*x);
}
int main()
{
cin>>xx>>yy>>m>>n>>l;
a=xx-yy;
b=n-m;
if(b<)b=-b,a=-a;
r=gcd(b,l);
exgcd(b,l,x,y);
//现在我们解出的是bx+lz=gcd(b,l)的解,输出答案是要扩大至a.
if(a%r!=)printf("Impossible");
else cout<<((x*(a/r))%(l/r)+(l/r))%(l/r);
//这个答案我研究了好久,最后才发现这个模数是因为组这么多步以后
//他们两个都回到了起始点.
//cout<<x*(a/r);
}

洛谷 P1516 青蛙的约会的更多相关文章

  1. 洛谷 P1516 青蛙的约会 解题报告

    P1516 青蛙的约会 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ...

  2. 洛谷——P1516 青蛙的约会

    P1516 青蛙的约会 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ...

  3. 洛谷 p1516 青蛙的约会 题解

    dalao们真是太强了,吊打我无名蒟蒻 我连题解都看不懂,在此篇题解中,我尽量用语言描述,不用公式推导(dalao喜欢看公式的话绕道,这篇题解留给像我一样弱的) 进入正题 如果不会扩展欧里几德的话请先 ...

  4. 洛谷P1516 青蛙的约会(扩展欧几里德)

    洛谷题目传送门 很容易想到,如果他们相遇,他们初始的位置坐标之差\(x-y\)和跳的距离\((n-m)t\)(设\(t\)为跳的次数)之差应该是模纬线长\(l\)同余的,即\((n-m)t\equiv ...

  5. 洛谷P1516 青蛙的约会

    题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清 ...

  6. P1516 青蛙的约会和P2421 [NOI2002]荒岛野人

    洛谷 P1516 青蛙的约会 . 算是手推了一次数论题,以前做的都是看题解,虽然这题很水而且还交了5次才过... 求解方程\(x+am\equiv y+an \pmod l\)中,\(a\)的最小整数 ...

  7. 【题解】P1516 青蛙的约会(Exgcd)

    洛谷P1516:https://www.luogu.org/problemnew/show/P1516 思路: 设两只青蛙跳了T步 则A的坐标为X+mT   B的坐标为Y+nT 要使他们相遇 则满足: ...

  8. P1516 青蛙的约会

    P1516 青蛙的约会x+mt-p1L=y+nt-p2L(m-n)t+L(p2-p1)=y-x令p=p2-p1(m-n)t+Lp=y-x然后套扩欧就完事了 #include<iostream&g ...

  9. 解题报告:luogu P1516 青蛙的约会

    题目链接:P1516 青蛙的约会 考察拓欧与推式子\(qwq\). 题意翻译? 求满足 \[\begin{cases}md+x\equiv t\pmod{l}\\nd+y\equiv t\pmod{l ...

随机推荐

  1. 登录案例version1 基本登录+验证码

    package com.frxx.web.servlet; import com.frxx.domain.User; import com.frxx.service.impl.UserServiceI ...

  2. redis之五大数据类型

    redis之五大数据类型 redis redis的两种链接方式 简单链接 1234 import redisconn = redis.Redis(host='10.0.0.200',port=6379 ...

  3. HDU-3072-IntelligenceSystem(tarjan,贪心)

    链接:https://vjudge.net/problem/HDU-3072 题意: 给你n个点,1个点到另一个点连接花费c,但是如果几个点可以相互可达,则这几个点连通花费为0. 求将整个图连通的最小 ...

  4. 2017ACM/ICPC广西邀请赛 A Math Problem

    解法:发现..最多15个,那么..暴力一下啦 #include <iostream> #include <stdio.h> #include <vector> #i ...

  5. ASM 磁盘组的的scrip

    之前经常用如下方式进行查询:步骤 1 以oracle用户登录系统.步骤 2 执行如下命令改变ORACLE_SID环境变量.$ export ORACLE_SID=+ASM1[1或者2]需要通过ps - ...

  6. ajax在购物车中的应用

    代码如下: 购物车页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  7. Web Api2中使用Session

    要在webApi里面使用Session必须在Global.asax插入 public override void Init() { this.PostAuthenticateRequest += (s ...

  8. 【extjs6学习笔记】0.1 准备:基础概念(02)

    Ext 类 Ext 是一个全局单例的对象,在 Sencha library 中它封装了所有的类和许多实用的方法.许多常用的函数都定义在 Ext 对象里.它还提供了像其他类中一些频繁使用的方法的快速调用 ...

  9. Java中类成员变量初始化顺序

    一. 定义处默认初始化vs构造函数中初始化 java中类成员变量支持在声明处初始化,也可以在构造函数中初始化,那么这两者有什么区别呢?看下面例子 public class FieldsInit { p ...

  10. python+selenium之验证码的处理

    对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码.验证码的类型很多,有字母数字的,有汉字的.甚至还有需要用户输入一道算术题的答案的.对于系统来说,使用验证码可以有效地防止采用机器猜测方 ...