Loading docs/misc/josephus.md +18 −17 Original line number Diff line number Diff line Loading @@ -45,8 +45,10 @@ int josephus(int n, int k) { if (k > n) return (josephus(n - 1, k) + k) % n; // 线性算法 int res = josephus(n - n / k, k); res -= n % k; if (res < 0) res += n;//mod n else res += res / (k - 1);// 还原位置 if (res < 0) res += n; // mod n else res += res / (k - 1); // 还原位置 return res; } ``` Loading @@ -64,4 +66,3 @@ x=-\frac{\ln n}{\ln\left(1-\frac{1}{k}\right)} $$ 用泰勒级数~~搞一搞~~可以得到 $x\approx k\ln n$ 。于是可以近似认为该算法的复杂度是 $O(k\log_2n)$ 。 Loading
docs/misc/josephus.md +18 −17 Original line number Diff line number Diff line Loading @@ -45,8 +45,10 @@ int josephus(int n, int k) { if (k > n) return (josephus(n - 1, k) + k) % n; // 线性算法 int res = josephus(n - n / k, k); res -= n % k; if (res < 0) res += n;//mod n else res += res / (k - 1);// 还原位置 if (res < 0) res += n; // mod n else res += res / (k - 1); // 还原位置 return res; } ``` Loading @@ -64,4 +66,3 @@ x=-\frac{\ln n}{\ln\left(1-\frac{1}{k}\right)} $$ 用泰勒级数~~搞一搞~~可以得到 $x\approx k\ln n$ 。于是可以近似认为该算法的复杂度是 $O(k\log_2n)$ 。