- 按键认证大神
- 2699998
- 3587
- 11
- 2173 朵
- 7386 个
- 1021 个
- 91120
- 2014-08-23
|
1#
t
T
发表于 2022-05-02 13:50
|
|只看楼主
题目描述 给定一个数字n,找出1到n(含n)中,经过淘汰后最终剩下到数字。 淘汰到规则是:从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾。 重复上面的步骤,但这次是从右到左。也就是,删除最右侧的数字,然后剩下的数字每隔一个删除一个。 不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。
【示例】 输入:9 输出:6 解释:1,2,3,4,5,6,7,8,9中,第一轮淘汰1、3、5、7、9后剩下2、4、6、8,第二轮淘汰4、8剩下2、6,第三轮淘汰2,所以最终结果是6
题目难度:简单 题目来源:CodeWars-Last man standing 题目交流: 584781753
|
- Import "SmAssert.dll"
- Function 一站到底(数字)
- // 您的代码写在这里
- End Function
- SmAssert 一站到底(1) = 1
- SmAssert 一站到底(9) = 6
- SmAssert 一站到底(100) = 54
- SmAssert 一站到底(1000) = 510
复制代码 参考题解- Import "SmAssert.dll"
- Function 一站到底(数字)
-
- '【作者】:神梦无痕
- '【QQ】:1042207232
- '【Q群】:584781753
-
- Dim sc
- Dim 返回值, 步进, 向量
-
- Set sc = CreateObject("MSScriptControl.ScriptControl")
- sc.Language = "JScript"
- 返回值 = 1: 步进 = 1: 向量 = 0
- While(数字 > 1)
- If Not 数字 Mod 2 And 向量 Mod 2 Then
- 返回值 = 返回值 - 步进
- End If
- 返回值 = 返回值 + 步进
- 数字 = sc.Eval(数字 & ">>" & 1)
- 步进 = sc.Eval(步进 & "<<" & 1)
- 向量 = 向量 + 1
- Wend
- Set sc = Nothing
- 一站到底 = 返回值
- End Function
- SmAssert 一站到底(1) = 1
- SmAssert 一站到底(9) = 6
- SmAssert 一站到底(100) = 54
- SmAssert 一站到底(1000) = 510
复制代码 插件下载【插件】神梦断言插件 SmAssert.dll,帮助开发者发现业务逻辑错误
|