每日一题: 二 杀人事件
假设有n个人站成一个圆圈,按顺序排列1到n。
1号开始用剑杀死2号。然后他把剑传给仍站着的下一个人,在这种情况下,3号。3号然后用剑杀4号,并将其传给5号。这种模式继续在圈内和周围,直到只有一个人保持。
最后一个人的序号是多少?
例子:
假设有5个人站成一圈 1号拿剑杀死2号,传递给3号, 3号拿剑杀死4号,传递给5号, 5号拿剑杀死1号,传递给3号, 3号拿剑杀死5号,最终获胜
function circle_slash(int $n): int { // Coding and coding ... }
其中,$n为人数.
祝君好运!
答案,我会在评论区中查看,谢谢!晚上我会搬出示例代码!谢谢 segmentfault团队 清蒸不是水煮 提供的意见
例子:
让我们来看看PHP的最简单的例子
function circle_slash(int $n): int { return 1 + 2 * ($n - 2 ** ~~log($n, 2)); }
暂时算法最优的:
function circle_slash(int $n): int { $multiplier = 2; $firstKiller = 1; while ($n > 1) { $firstKiller += ($n % 2) * $multiplier; $n = floor($n / 2); $multiplier *= 2; } return $firstKiller; }
不过这两个都不是我写的,我得感谢chenx提供的想法.谢谢!
至于第一个例子,我是在google而得到.感谢 donaldsebleung.
原文地址:https://segmentfault.com/a/1190000010087799
相关推荐
-
C++类内存分布 c/c++
2019-3-30
-
WebAssembly基础 c/c++
2019-3-28
-
算法之旅 | 快速排序法 c/c++
2019-3-28
-
非变易算法 – STL之算法 c/c++
2019-4-1
-
【C++】 4_C++11 新特性-语言篇 c/c++
2020-6-15
-
从暴力到 NAN 再到 NAPI——Node.js 原生模块开发方式变迁 c/c++
2019-3-28
-
编译一个不依赖任何msvcrXX.dll的Windows程序 c/c++
2019-3-28
-
【C++】 3_C++11 新特性-语言篇 c/c++
2020-6-15
-
干货☞☞计算机二级C语言过级经验! c/c++
2019-3-30
-
神奇的C语言,这才是C语言大牛操作,作为面试题,怕是秒杀众人 c/c++
2019-3-30