← 完整题目索引

PROJECT EULER · #0653

无摩擦管

Frictionless Tube

仅题目 · 待解原题 ↗

考虑一根长度为 L 毫米、直径为 20 毫米的水平无摩擦管。管子的东端是敞开的,而西端是密封的。该管子在指定的起始位置包含直径为 20 毫米的 N 弹珠,每个弹珠最初以 v 的共同速度向西或向东移动。

由于弹珠的运动方向相反,所以必然会发生一些碰撞。我们假设碰撞是完全弹性的,因此涉及的两个弹珠立即改变方向并继续以 v 的速度远离碰撞地点。同样,如果最西边的大理石与管子的密封端相撞,它会立即改变方向并以 v 的速度继续向东移动。另一方面,一旦弹珠到达未密封的东端,它就会离开管子,并且不会与剩余的弹珠发生进一步的相互作用。

为了获得起始位置和初始方向,我们使用伪随机序列 rj 定义:
r1=6563116
rj+1=rj2mod32745673
最西端的大理石最初定位时与管的密封端之间有 (r1mod1000)+1 毫米的间隙(从大理石表面的最西点开始测量)。然后,对于 2jN,从西边算起,(j1)j 弹珠之间的间隙(从它们最近的点开始测量)由 (rjmod1000)+1 毫米给出。 此外,如果是 rj10000000,则 jth 大理石最初会向东移动;如果是 rj>10000000,则最初会向西移动。

例如,对于 N=3,序列指定的间隙为 117、432 和 173 毫米。因此,弹珠的中心距管子密封的西端分别为 127、579 和 772 毫米。最西边的大理石最初向东移动,而另外两个大理石最初向西移动。

在此设置下,使用 5 米管 (L=5000),结果表明,中间(第二个)大理石在其中心到达管的最东端之前移动了 5519 毫米。

d(L,N,j)j 弹珠在其中心到达管东端之前移动的距离(以毫米为单位)。所以d(5000,3,2)=5519。您还获得了 d(10000,11,6)=11780d(100000,101,51)=114101

查找 d(1000000000,1000001,500001)

题解待补充

这道题的题目已收录,解题思路、代码和答案将在后续补充。