- 按键认证大神
- 2699998
- 3587
- 11
- 2173 朵
- 7386 个
- 1021 个
- 91120
- 2014-08-23
|
1#
t
T
发表于 2022-06-29 08:46
|
|只看楼主
题目描述- Import "SmAssert.dll"
- Function 九的时代(数字)
- // 您的代码写在这里
- End Function
- SmAssert 九的时代(8) = 0
- SmAssert 九的时代(10) = 1
- SmAssert 九的时代(100) = 20
- SmAssert 九的时代(279) = 48
- ' 进阶
- SmAssert 九的时代(99999) = 50000
- SmAssert 九的时代(565754) = 275645
复制代码 参考题解- /*
- 总结规律,可以推断出:
-
- 个位:当为9时1个,其他0个
- 十位(10): 1个
- 百位(100): 20个
- 千位(1000): 300个
- 万位(10000): 4000个
- */
- Import "SmAssert.dll"
- Function 九的时代(数字)
-
- '【作者】:神梦无痕
- '【QQ】:1042207232
- '【Q群】:584781753
-
- Dim length, value
- Dim b, k, d, m
-
- ' 目标数字长度
- length = Len(数字)
-
- ' 递归结束
- If length = 1 Then
- If 数字 = 9 Then
- 九的时代 = 1
- Else
- 九的时代 = 0
- End If
- Exit Function
- End If
-
- ' 辅助数字
- b = 10 ^ (length - 1)
- k = (length - 1) * 10 ^ (length - 2)
-
- ' 商和余数
- d = 数字 \ b
- m = 数字 Mod b
-
- ' 递归计算对应数量
- value = d * k + 九的时代(m)
-
- If d = 9 Then
- ' 单独处理9开头的
- value = value + m + 1
- End If
-
- 九的时代 = value
- End Function
- SmAssert 九的时代(8) = 0
- SmAssert 九的时代(10) = 1
- SmAssert 九的时代(100) = 20
- SmAssert 九的时代(279) = 48
- ' 进阶
- SmAssert 九的时代(99999) = 50000
- SmAssert 九的时代(565754) = 275645
复制代码 插件下载【插件】神梦断言插件 SmAssert.dll,帮助开发者发现业务逻辑错误
|