欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

uva 10627 - Infinite Race(数论)

发布时间:2025/3/20 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 uva 10627 - Infinite Race(数论) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目链接:uva 10627 - Infinite Race

题目大意:一段路。两个人在这条路上来回走,求相遇次数

解题思路:相遇有两种,一种是追击,一种是相对

追击:t(uv)=(2k+1)L
相对:t(u+v)=(2k+1)L

可是有一种特殊情况。就是在边界相遇的时候,会被考虑两次,所以要减掉一次。
那么怎样考虑边界相遇的时间:找到一篇具体解释

#include <cstdio> #include <cstring> #include <cmath> #include <algorithm>using namespace std; typedef long long ll;ll gcd (ll a, ll b) {return b ? gcd(b, a%b) : a; }int main () {ll L, u, v, t;while (scanf("%lld%lld%lld%lld", &L, &u, &v, &t) == 4 && L + u + v + t) {if (u == 0 && v == 0) {printf("0\n");continue;}ll ans = 0;if (u < v)swap(u, v);ans += (t * (u+v) + L) / (2*L);ans += (t * (u-v) + L) / (2*L);ll d = gcd(u, v);if ((u-v) / d % 2)ans -= (d * t + L) / (2*L);printf("%lld\n", ans);}return 0; } 与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的uva 10627 - Infinite Race(数论)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。