范围内递增和递减数字的总量
Total amount of increasing and decreasing numbers in a range
总结
在这种情况下,递增 数字将是数字从左向右移动时递增的数字,例如 14578
和 3489
和 3347778
.
一个递减的数字是一样的,只是相反,例如84320
和931
。
给定一个介于 1 和 10 之间的数字 x
,如果不使用 force/iteration方法?
前几个 x 值的示例图表
+---+-------+
| X | Total |
+---+-------+
| 0 | 1 |
| 1 | 10 |
| 2 | 100 |
| 3 | 475 |
| 4 | 1675 |
| 5 | 4954 |
+---+-------+
如果要计算递增数的个数,可以建一个二维的table,行对应涉及的数,列对应位数。然后您插入 i
位数的递增数字,在单元格中使用最多 j
的数字。第一栏很简单:
1 digit 2 digits 3 digits ...
>= 0 10
>= 1 9
>= 2 8
>= 3 7
>= 4 6
>= 5 5
>= 6 4
>= 7 3
>= 8 2
>= 9 1
如果要计算下一列,可以参考上一列。假设您要计算 cell(2, 9)
(位数大于 9 的两位数)。然后你可以在前面放一个 9 并使用任何数字大于 9 的 1 位数字。所以,只有 1。cell(2, 8)
也是如此。您可以在前面放一个 8 加上数字大于 8 的任何 1 位数字 (cell(1, 8)
) 加上您在下面的单元格中使用的相同数字。总的来说:
cell(i, j) = cell(i - 1, j) + cell(i, j + 1)
前几列是:
1 digit 2 digits 3 digits ...
>= 0 10 10+45=55 55+165=220
>= 1 9 9+36=45 45+120=165
>= 2 8 8+28=36 36+84=120
>= 3 7 7+21=28 28+56=84
>= 4 6 6+15=21 21+35=56
>= 5 5 5+10=15 15+20=35
>= 6 4 4+ 6=10 10+10=20
>= 7 3 3+ 2=6 6+ 4=10
>= 8 2 2+ 1=3 3+ 1=4
>= 9 1 1 1
总数始终为条目cell(digits, 0)
。所以有 220 个递增的三位数或更少的数字。
类似的table可以计算出递减的数字。但是,为了计算减少数字的数量,您必须对所有列求和。例如。对于三位数递减的数字:10+55+220=285
.
为了计算增加或减少的数字,只需将两个值相加并减去同时增加和减少的数字。对于每个数字,它将有 10。因此对于 3 位数字,您必须计算 220+285-30=475
。
因此,迭代计算 table。您只需要保留当前列并相应地计算总数即可。
总结
在这种情况下,递增 数字将是数字从左向右移动时递增的数字,例如 14578
和 3489
和 3347778
.
一个递减的数字是一样的,只是相反,例如84320
和931
。
给定一个介于 1 和 10 之间的数字 x
,如果不使用 force/iteration方法?
前几个 x 值的示例图表
+---+-------+
| X | Total |
+---+-------+
| 0 | 1 |
| 1 | 10 |
| 2 | 100 |
| 3 | 475 |
| 4 | 1675 |
| 5 | 4954 |
+---+-------+
如果要计算递增数的个数,可以建一个二维的table,行对应涉及的数,列对应位数。然后您插入 i
位数的递增数字,在单元格中使用最多 j
的数字。第一栏很简单:
1 digit 2 digits 3 digits ...
>= 0 10
>= 1 9
>= 2 8
>= 3 7
>= 4 6
>= 5 5
>= 6 4
>= 7 3
>= 8 2
>= 9 1
如果要计算下一列,可以参考上一列。假设您要计算 cell(2, 9)
(位数大于 9 的两位数)。然后你可以在前面放一个 9 并使用任何数字大于 9 的 1 位数字。所以,只有 1。cell(2, 8)
也是如此。您可以在前面放一个 8 加上数字大于 8 的任何 1 位数字 (cell(1, 8)
) 加上您在下面的单元格中使用的相同数字。总的来说:
cell(i, j) = cell(i - 1, j) + cell(i, j + 1)
前几列是:
1 digit 2 digits 3 digits ...
>= 0 10 10+45=55 55+165=220
>= 1 9 9+36=45 45+120=165
>= 2 8 8+28=36 36+84=120
>= 3 7 7+21=28 28+56=84
>= 4 6 6+15=21 21+35=56
>= 5 5 5+10=15 15+20=35
>= 6 4 4+ 6=10 10+10=20
>= 7 3 3+ 2=6 6+ 4=10
>= 8 2 2+ 1=3 3+ 1=4
>= 9 1 1 1
总数始终为条目cell(digits, 0)
。所以有 220 个递增的三位数或更少的数字。
类似的table可以计算出递减的数字。但是,为了计算减少数字的数量,您必须对所有列求和。例如。对于三位数递减的数字:10+55+220=285
.
为了计算增加或减少的数字,只需将两个值相加并减去同时增加和减少的数字。对于每个数字,它将有 10。因此对于 3 位数字,您必须计算 220+285-30=475
。
因此,迭代计算 table。您只需要保留当前列并相应地计算总数即可。