题目链接:https://vjudge.net/problem/POJ-1061

题意:在一个首位相接的坐标轴上,A、B开始时分别位于X,Y处,每个单位时间向右移动m,n米,问是否能相遇,坐标轴长L。

思路:与poj2115几乎一样,扩展欧基里德模板题。题意即X+m*x=Y+n*x (mod L),x为最短相遇时间,转换后:(m-n)*x+L*y=Y-X (mod L),令a=m-n,b=L,c=Y-X,可通过扩展欧基里德定理计算出a*x+b*y=gcd(a,b),令d=gcd(a,b)。则原题有解等价与d整除c,且解为 ((c/d*x)%tmp+tmp)%tmp,tmp=abs(b/d),因为a可能小于0,所以计算出来的c也可能小于0,所以tmp要取绝对值。

AC代码:

#include<cstdio>
using namespace std;
typedef long long LL; LL X,Y,m,n,L; void ex_gcd(LL a,LL b,LL &x,LL &y,LL &d){
if(!b) x=,y=,d=a;
else{ex_gcd(b,a%b,y,x,d);y-=x*(a/b);}
} int main(){
scanf("%lld%lld%lld%lld%lld",&X,&Y,&m,&n,&L);
LL a=m-n,b=L,c=Y-X,x,y,d;
ex_gcd(a,b,x,y,d);
LL tmp=b/d;
if(tmp<) tmp=-tmp;
if(c%d==)
printf("%lld\n",((c/d*x)%tmp+tmp)%tmp);
else
printf("Impossible\n");
return ;
}

最新文章

  1. Windows Server 2012 在桌面上显示”我的电脑”图标
  2. AJAX格式
  3. GitLab安装手记
  4. C++ 高质量编程附录试题
  5. Oracle Linux 6.3下安装Oracle 11g R2(11.2.0.3)
  6. Asp.net 实现图片缩放 无水印(方法二)
  7. iOS实践01
  8. c++/c/java 资源共享群
  9. poj - 1185 炮兵阵地 状压DP 解题报告
  10. POI一(介绍)
  11. mvc中路由的映射和实现IHttpHandler挂载
  12. Android进阶加密-第1章-Android系统架构-读书笔记
  13. Spring mybatis源码篇章-MapperScannerConfigurer关联dao接口
  14. Linux上安装MangoDB
  15. [UVALive 3661] Animal Run
  16. P3605 [USACO17JAN]Promotion Counting晋升者计数
  17. 什么是 PWA?
  18. [py]字符串/列表
  19. O(n)线性空间的迷宫生成算法
  20. python—第三库的安装方法

热门文章

  1. UE4添加模块
  2. Socket编程-基础使用
  3. shiro.ini
  4. python3笔记十三:python数据类型-Set集合
  5. 20191010-8 alpha week 1/2 Scrum立会报告+燃尽图 06
  6. centos安装FTP脚本
  7. DAY 3模拟赛
  8. 【剑指offer37】二叉树的序列化
  9. python中_new_()与_init_()的区别
  10. xcode dyld: Library not loaded: @rpath/libswiftCore.dylib问题解决