返回一个整数,其数字总和精确到n

时间:2012-10-22 09:25:50

标签: java digits

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

在数字和系统中,数字总和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,这不再适用。

2 个答案:

答案 0 :(得分:3)

最小的数字始终为" x9 ... 9999"其中x是一个数字(可能是0)。

您需要做的就是找到:

  • x的值:n % 9
  • 有多少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,这会产生39999999999999出现12次)