题目翻译

A 和 B 正在赛跑,前 $T_1$ 分钟 A 和 B 速度分别是 $A_1$ 和 $A_2$,之后 $T_2$ 分钟 A 和 B 速度分别是 $A_2$ 和 $B_2$,以此类推,问 A 和 B 会相遇几次。

相遇无数次输出 infinity

题目思路

什么小学奥数入门题。

为了方便描述:

前半段:$S_{a,1}=T_1\times A_1,S_{b,1}=T_1\times B_1$。

后半段:$S_{a,2}=T_2\times A_2,S_{b,2}=T_2\times B_2$。

全程:$S_a=S_{a,1}+S_{a,2},S_b=S_{b,1}+S_{b,2}$。

首先考虑无数次,显然的,A 一个全程与 B 一个全程路程相同即可,即 $S_a=S_b$。

然后我们为了方便描述,强制转换一下,因为本题不用关心前后半程相对顺序与两个人的相对顺序,令 $S_a>S_b$,之后方便我们的描述。

此时如果 $S_{b,1}\lt S_{a,1}$,那么就不会产生任何相遇,直接特判掉。

然后再次令 $S_{a,1}\lt S_{b,1},S_{a,2}\gt S_{b,2}$。即让 A 前半程跑不过 B,但是后半程能追上。

此时就变成了一般情况,A 每个全程比 B 多跑的要去一直填补被 B 甩下的距离,因此所有全程的相遇次数就是 $\left\lfloor\dfrac{S_{b,1}-S_{a,1}}{S_a-S_b}\right\rfloor\times2$。

然后注意一个细节就是可能半程就把最后一次相遇追上了,所以最后要加上 $[(S_{b,1}-S_{a,1})\bmod (S_a-S_b)\neq 0]$。

丑陋代码

AT submission 46471947

最后修改:2023 年 11 月 07 日
v我50吃疯狂星期四