让我们带一个常规的房子,一个男人必须每隔n分钟去厕所,需要坐下,而一个女人则必须每隔m分钟去厕所,坐下就需要。是否有可能创建一种O(1)算法,该算法将在给定的X分钟内输出马桶座圈移动的确切次数?有两个不同的附加输入:
探视后,该人总是离开座位。
2.该名男子总是在探视后把座位放下。

结论:在现实生活中(涉及到n远远超过m,并且X-> infinity),事实证明,座椅运动的数量没有差异。
但是,如果男人比女人做得更多,那么,如果他只是离开座位,则可以延长座椅寿命,但是这种情况下,其中一个(或两个)都应该去看医生。
现在我知道什么是座椅本身的最佳选择,但是哪个人做出更多的 Action -是另一个问题(无论如何都不应问)。

最佳答案

对于2,答案是2*floor(X/n)。该男子将总是在马桶坐下的情况下去洗手间,然后放下马桶。女人永远不会放下它,因为只有男人去洗手间才放起来。
1有点棘手。

编辑:啊。对于1,答案是2*floor(X/m)。马桶座圈只有在妇女上厕所时才转换。

编辑2:加减马桶的初始状态。

EDIT3:只有m>=n,我对1的回答才是正确的。稍后再解决。

EDIT4:如果为n>=2m,则为2*floor(X/n),因为座位只会在男人尿尿时转变。如果是n>m,我相信答案也是2*floor(X/n),但是我需要计算数学。

编辑5:因此,对于2m>n>m,当男人在女人之后排尿时,座位转换,反之亦然。男人/女人访问的顺序每隔least_common_multiple(m, n)分钟重复一次,因此我们只需要关注这段时间里发生的事情即可。该人使用座椅时,座位唯一一次而不是过渡的时间是,如果他设法连续两次访问该座椅。鉴于女性比男性经常光顾,因此每次男性探访之间至少有一个女性光顾。 (在开始或结束时两次。)

答案1然后变为:(n>m ? 2*floor(X/n) : 2*floor(X/m)) + (remainder(X/n) > remainder(X/m) ? 1 : 0)。或类似的东西。

10-07 18:09