P1516 青蛙的约会
本题就是个数学题....我们要通过题目列出一个有解情况的方程。
第一只青蛙在跳了T次时是位于x+mt.
第二只青蛙同理是位于y+nt.
他们相遇便需要满足两者的差S是个整数,可列一方程:
(n-m)t+S=x-y
变成了一个ax+by=c形式,利用拓展欧几里德求解。
然后判断以下不存在解的情况,有解的话d=gcd(n-m,l),特解x1=x1(x-y)/d,通解为x1=x1(x-y)/d+k(l/d).
ans就是(x%(l/d)+l/d)%(l/d).
#include<iostream>
#include<cstdio>
using namespace std;
long long x,y,n,m,l;
void euclid(long long a,long long b, long long &d,long long &x,long long &y)
{
if(!b)
{
x=1;y=0;d=a;
}
else
{
euclid(b,a%b,d,x,y);
int t=x;x=y;y=t-a/b*y;
}
}
int main()
{
long long a,b,d;
scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l);
if(n<m)
{
swap(m,n);
swap(x,y);
}
euclid(n-m,l,d,a,b);
if((x-y)%d!=0 || m==n) printf("Impossible");
else
{
printf("%d",(a*(x-y)/d%(l/d)+(l/d))%(l/d));
}
return 0;
}
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
· C# 模式匹配全解:原理、用法与易错点
· 记一次SSD性能瓶颈排查之路——寿命与性能之间的取舍
· 理解 .NET 结构体字段的内存布局
· 时隔半年,拾笔分享:来自一个大龄程序员的迷茫自问
· 3 个超火的开源项目「GitHub 热点速览」
· C#-Visual Studio工具使用实践
· [原创]《C#高级GDI+实战:从零开发一个流程图》第02章:画一个矩形,能拖动!
· WineHQ 发布的 Framework Mono 6.14 的这个特性对Windows Form