这个算法是扩展约瑟夫算法。
算法的描述:
具体的实现是这样的:
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 的表达式,再保留高阶项得到最终的结果
最终通过化简得到的复杂度的结果是:
但是从来没有见到过这样的复杂度...
因为自己也刚刚开始学数据结构与算法,所以恳请各位帮忙算一算