青蛙的约会

exgcd

根据题意列出方程:

设所用时间为T,相差R圈时相遇

(x+T*m)-(y+T*n)=R*l

移项转换,得

T*(n-m)-R*l=x-y

设a=n-m,b=l,c=x-y,x_=T,y_=R,则

a*x_+b*y_=c

经典的不定方程式,果断用exgcd

当且仅当 gcd(a,b) | c 时,方程有解

我们用exgcd求的方程为 a*x_+b*y_=gcd(a,b)

所以求出的解要 /gcd(a,b)*c

此时我们求出的解不一定是最优解

设x0为最小解

而任意 xi= x0+ b/gcd(a,b)*t

于是我们把这个解 %( b/gcd(a,b) ) 就能得到答案了(注意负数转正)

#include<iostream>
using namespace std;
typedef long long ll;
ll g,x0,y0,X,Y,m,n,l,p;
void exgcd(ll a,ll b,ll &x,ll &y){
if(!b) x=,y=,g=a;
else exgcd(b,a%b,y,x),y-=x*(a/b);
}
int main(){
cin>>X>>Y>>m>>n>>l;
if(n<m) swap(X,Y),swap(m,n); //注意a,b要>0
exgcd(n-m,l,x0,y0);
if((X-Y)%g) cout<<"Impossible";
else p=l/g,cout<<((X-Y)/g*x0%p+p)%p;
}

P1516/bzoj1477 青蛙的约会的更多相关文章

  1. [BZOJ1477]青蛙的约会

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

  2. BZOJ-1477 青蛙的约会 拓展欧几里德

    充权限之前做的...才来交 1477: 青蛙的约会 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 369 Solved: 233 [Submit][Sta ...

  3. p1516&poj1061&bzoj1477 青蛙的约会

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

  4. BZOJ1477 青蛙的约会 扩展欧几里德

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1477 题意概括 两只青蛙,现在分别在x,y的位置,以m,n的速度在周长为L的环形跑道上面跑. 问他 ...

  5. 「洛谷P1516」 青蛙的约会

    洛谷题号:P1516 出处:? 主要算法:数论 难度:4.4 思路分析: 典型的同余方程.由于是纬线,绕一圈是可以绕回来的,所以是可以取模的. 阅读题目,很容易得到同余方程$ x + tm ≡ y + ...

  6. 【洛谷P1516】青蛙的约会

    题目大意:给定 \(a,b,c\),求线性同余方程 \(ax+by=c\) 的最小正整数解. 题解:首先判断方程是否有解,若 c 不能整出 a 与 b 的最大公约数,则无解.若有解,则利用扩展欧几里得 ...

  7. bzoj1477: 青蛙的约会(exgcd)

    昨天打code+的时候发现自己已经不大会exgcd了..赶紧复习一下QAQ 求$ax+by=gcd(a,b)$的解 初始条件 $gcd(a, 0)=a$ $x=1,y=0$ 推导过程 $gcd(a,b ...

  8. 【BZOJ1477】青蛙的约会(拓展欧几里得)

    [BZOJ1477]青蛙的约会(拓展欧几里得) 题面 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为 ...

  9. 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 ...

随机推荐

  1. Redis+Keepalived实现高可用

    使用redis哨兵可以在主服务器出现故障的时候自动切换主从,但是从服务器的IP不同于原主服务器的IP还需要在客户端手动修改IP才能生效 下面使用keepalived实现VIP自动漂移 keepaliv ...

  2. Saltstack之job管理和runner

    Master端执行命令及操作默认会保存在master端的/var/cache/salt/master/jobs 默认保存时间是24小时 如果需要保存在数据库 先参考http://www.cnblogs ...

  3. POJ-1191-棋盘分割(动态规划)

    棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13593 Accepted: 4846 Description 将一个 ...

  4. 更改hosts操作

    更改hosts操作: 1.打开文件夹目录:/etc/hosts 2.复制hosts文件 3.修改复制的文件 4.移动并替换到原来的hosts文件 5.鉴定输入密码操作成功 具体修改方案使用: 0.0. ...

  5. initrd和initramfs的区别

      Linux内核在初始化之后会执行init进程,而init进程会挂载我们的根文件系统,但由于init程序也是在根文件系统上的,所以这就有了悖论.Linux采用两步走的方法来解决这个问题.Linux2 ...

  6. HTML标签_增加css样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. mybatis联接查询例子

    where判断如果放在最外层就是对连接查询后的结果经行筛选. SELECT * from ( and lw_area.area_id like '35%' ) la LEFT JOIN ( selec ...

  8. Prime Path--POJ3126(bfs)

    Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...

  9. Vagrant入门一(转)

    原文: https://github.com/astaxie/Go-best-practice/blob/master/ebook/zh/01.2.md 1.2 Vagrant安装配置 实际上Vagr ...

  10. gulp-webserver

    gulp-webserver是开启服务器,通常和gulp-livereload结合使用.而这两个结合使用效果,几乎类似browser-Sync.下面是gulp-webserver和gulp-liver ...