我的问题与数字总和有关。
在数字和系统中,数字总和39 = 3 + 9 = 12.
但是在我的情况下,我想写一个用户输入12的方法,而且 方法将返回39,假设39是实现12的数字总和的最小数字。
如果我们可以在伪代码中讨论这个问题会很好,因为我更感兴趣的是学习开发方法/算法/公式来解决这个难题。
提示使用队列。我也尝试了以下内容:
号%9;数字/ 9,它很接近,但似乎并不适用于所有情况。
示例将是:
12%9 = 3
12/9 = 1; if(ans = 1,return 9)
因此3和9将是39.我知道我很接近,但我尝试使用相同的数字,如111,这不再适用。
答案 0 :(得分:3)
最小的数字始终为" x9 ... 9999"其中x是一个数字(可能是0)。
您需要做的就是找到:
n % 9
n / 9
。对于111:
n % 9
是3。n / 9
是12。所以答案是3999999999999。
答案 1 :(得分:1)
我认为数字总和等于n
的最小数字k
将始终为
i99999
i
的位数。
使用它,你有
i = n % 9
j = floor(n / 9)
然后,您可以通过连接i
然后9
j
次来构建您的号码。
对于n = 12
,这会产生39
。
对于n = 111
,这会产生3999999999999
(9
出现12次)