让我们带一个常规的房子,一个男人必须每隔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)
。或类似的东西。