0

我的问题与数字总和有关。

在数字和系统中,数字 39 = 3 + 9 = 12 的数字和。

但是在我的情况下,我想编写一个用户输入 12 的方法,并且该方法将返回 39,因为 39 是实现 12 位数总和的最小数字。

如果我们可以在伪代码中讨论这个会很好,因为我更感兴趣的是学习开发一种方法/算法/公式来解决这个难题。

给出了使用队列的提示。我还尝试了以下方法:

数字%9; number/9,这很接近,但似乎不适用于所有情况。

一个例子是:

12%9 = 3

12/9 = 1;如果(答案 = 1,返回 9)

因此 3 和 9 将是 39。我知道我很接近,但我尝试对 111 等数字使用相同的数字,但这不再适用。

4

2 回答 2

3

最小的数字始终采用“x9...9999”的形式,其中 x 是单个数字(可能为 0)。

您需要做的就是找到:

  • x 的值:n % 9
  • 有多少个 9:n / 9.

对于 111:

  • n % 9是 3。
  • n / 9是 12。

所以答案是 3999999999999。

于 2012-10-22T09:28:48.720 回答
1

我认为n数字总和等于的最小数字k将始终是形式

i99999

i某个数字在哪里。

使用这个,你有

i = n % 9
j = floor(n / 9)

然后你通过连接ithen9 j时间来构造你的号码。

为此n = 12产生39.

为此n = 111产生39999999999999出现十二次)

于 2012-10-22T09:31:20.837 回答