【发布时间】:2014-04-09 18:16:48
【问题描述】:
我应该如何为这个挑战实现算法?
有三个整数,A、B 和 C。
您的计算器从数字 1 开始,它必须达到 C。为此,您可以执行两个操作:
- 将您的数字乘以 A(如果结果超过 4 位,则结果为 1)。
- 将您的数字除以 B(整数除法)。
您必须返回达到 C 所需的最少操作数。
此外,您的计算器只有四位数字,因此您可以期望 A、B 和 C 输入最多为 9999。
例子:
A = 2, B = 3, C = 10
1*A = 2
2*A = 4
4*A = 8
8*A = 16
16/B = 5
5*A = 10
所以结果将是6 步数。
我曾经通过暴力破解结果来做到这一点(尝试了很多组合并抓住了步数最少的一个)。太傻了。
【问题讨论】:
-
当您说计算器限制为四位数时,是否包括中间值?如果我有 600,然后进行乘法然后除法,我得到 400 还是 66?任何数字都可以是负数吗?
-
你能乘以超过 9999 吗?在这种情况下会发生什么?
-
我认为对于任何大于 9999/A 的数字,相乘只会将值重置为 1。
-
溢出饱和到1?这是我听过的最奇怪的溢出行为......
标签: algorithm