这个算法是扩展约瑟夫算法。
算法的描述:
具体的实现是这样的:
def J(n,x):
Dk = 1
while Dk <= (x-1)*n:
Dk = math.ceil((x/(x-1))*Dk)
return (x*n+1-Dk)
我大致的想法就是解关于 k 的方程:
从而得到 k 关于 n 和 x 的表达式,再保留高阶项得到最终的结果
最终通过化简得到的复杂度的结果是:
但是从来没有见到过这样的复杂度...
因为自己也刚刚开始学数据结构与算法,所以恳请各位帮忙算一算
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.