洛谷 P1516 青蛙的约会
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=1,y=0):(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<0)b=-b,a=-a;r=gcd(b,l);exgcd(b,l,x,y);//现在我们解出的是bx+lz=gcd(b,l)的解,输出答案是要扩大至a. if(a%r!=0)printf("Impossible");else cout<<((x*(a/r))%(l/r)+(l/r))%(l/r);//这个答案我研究了好久,最后才发现这个模数是因为组这么多步以后//他们两个都回到了起始点. //cout<<x*(a/r); }
转载于:https://www.cnblogs.com/rmy020718/p/9766469.html
洛谷 P1516 青蛙的约会相关推荐
- 数论:扩展欧几里德(洛谷P1516 青蛙的约会)
欧几里德 基本思想:gcd(q,r)=gcd(r,q%r); 证明,设q.r的最大公因数为a,则q=xa,r=ya,xy互质 不妨设x>y(显然如果小于会在一次gcd运算后交换) 则q%r=(x ...
- P1516 青蛙的约会 [exgcd]
P1516 青蛙的约会 题意:在一个长为\(l\)的环上面有两只青蛙,一只出发点为\(x\),一次跳\(m\),另一只出发点为\(y\),一次跳\(n\),求相遇时间. 这个长为\(l\)的环不难想到 ...
- POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法)
POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法) 手动博客搬家: 本文发表于20180226 23:35:26, 原地址https://blog.csdn ...
- 洛谷P1244青蛙过河
洛谷P1244青蛙过河 题目描述 有一条河,左边一个石墩(A 区)上有编号为 1,2,-,n 的 n 只青蛙,河中有 k 个荷叶(C 区),还有 h 个石墩(D 区),右边有一个石墩(B 区),n 只 ...
- 【洛谷P1516】青蛙的约会
青蛙的约会 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情 ...
- 洛谷P1244 青蛙过河 DP/思路
又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...
- 青蛙的约会(洛谷-P1516)
题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清 ...
- P1516 青蛙的约会
传送门 根据题意可以列出方程: 设走了X步,已经绕了维度线Y圈 那么 nX-mX=LY+(x-y) 稍微转换一下: (n-m)X - LY = x-y 如果设 A=n-m,B=-L,C=x-y ...
- 洛谷P1244青蛙过河题解
我用的是C++来解 其实这道题很简单,只要弄清楚关系就行,和汉诺塔问题相似.不用细想顺序(青蛙就是乱跳),可将青蛙作为一个整体来想. 我们用f[h][k]表示h个石墩和k片荷叶最多的青蛙数 f[0][ ...
最新文章
- C# 发送Http请求 - WebClient类
- mysql redis 中间件_Docker快速搭建Mysql社区版,Redis,MongoDb、MQ等等中间件。
- 单片机复位后为什么要对sp重新赋值_51单片机系列之2点亮第一个led小灯
- ES6新特性_ES6的Rest参数---JavaScript_ECMAScript_ES6-ES11新特性工作笔记012
- [译] JavaScript 中的私有变量
- QT自定义QmessageBox对话框
- nbu备份win平台oracle,NBU备份ORACLE错
- iOS之线程(二)GCD
- 程序员必备 Windows 快捷操作大全
- Python 计算彩色图像信噪比
- 996,活着抑或死亡
- 第3集丨通往圣贤之路
- 请问怎么设置默认浏览器
- 【科普】USDT的三种链类型(Omni、ERC20、TRC20)
- 苹果6如何截屏_苹果商量里需要花6元,才能买到的游戏:论如何建立一个修仙门派,到底好不好玩...
- Ubuntu 20.04 美化终端
- 打开SQL2000安装包没有弹出安装界面
- java下载附件给(pdf、pptx、word、excel、图片)添加水印
- C++报错无效的预处理命令include_Chapter2:从C/C++的编译原理说起
- 机器学习实战:基于Scikit-Learn.Keras和TensorFlow(原书第2版) 奥雷利安·杰龙——环境搭建anaconda
热门文章
- 数据可视化组队学习:《Task02 - 艺术画笔见乾坤》笔记
- 【CyberSecurityLearning 75】DC系列之DC-6渗透测试(WordPress)
- ubuntu 中vi的使用方法
- 自定义函数strcomp(),实现两个字符串的比较
- 【C++提高班】c++数组遍历比较相邻的数值
- 【听哥一句劝,C++水很深,你把握不住啊!】C++提高班之 符与*符
- STM32开发 -- 蓝牙开发详解(1)
- C语言再学习 -- 时间函数
- DM8168心得之SD卡快速分区制作
- 读取CSV内容,根据不同的图片标签放到指定文件夹