我在接受采访时被问到这个问题,我无法完全回答。事实上,面试官本人很困惑。想知道是否有人知道问题和答案的明确细节。
从我记忆中,问题是这样的:
如果您有n张牌,首先将第一张牌面朝上放在桌子上,即可获得神奇的序列, 在甲板的末端插入1 + 1(即)2张牌,取下一张(第3张)牌并将其面朝上放在桌子上,取3 + 1即4张牌并将其插入牌组的末端。
所以基本上,每次迭代,你拿一张牌面朝下放在桌子上,然后在牌组的末尾插入i + 1张牌。
这是我从问题中理解的,我本可以弄错一些细节。但无论如何,现在的问题是:
显然,这可以通过递归来解决,而不必在n之前进行操作。我建议我首先获得魔法序列,然后返回第k个元素,但显然有更好的方法。此外,想知道是否有人知道这个问题的完整细节。
谢谢!
答案 0 :(得分:0)
我不确定如何去做,但我认为一种方法可能是解决/简化递归关系:
f(1) = 1
f(2) = 3
f(3) = 7
f(4) = 15
f(k) = 2 * f(k-1) + 1 (mod n)
或者,有些人喜欢称呼它,
2^k - 1 (mod n)
... SHH