生成数字序列

时间:2011-10-09 13:40:40

标签: numbers large-data

给定整数 N (0 M 的最小数量 N ,< strong> M 具有相同的长度, N ,并且数字的总和相等。如果M不存在则返回-1

例如:

N = 134,M = 143,// 1 + 3 + 4 = 1 + 4 + 3

N = 020,M = 101,// 2 = 1 + 1似乎可以添加0以​​使长度相等

N = 120,M = 201,// 2 = 1 + 1

问题是今天我写的一个书面测试问题,我不知道如何在 N 的大范围内解决它。

1 个答案:

答案 0 :(得分:0)

将数字表示为数字字符串。 N M 只是两个长度相等的字符串。

我们将 N 的数字编号为 N k ,其中 N 0 是最后一个(最右边)的数字。

设置 M 0 = N 0 - 1, M 1 = N 1 + 1, M i = N 否则我 M 的数字总和保持与 N 相同,因为您刚刚将1从一位移到另一位,但现在 M &gt;的Ñ

当然,如果 N 0 = 0或 N 1 = 9,此技巧不起作用在这种情况下,转移到 N 1 N 2 以转移1等。

作为练习,证明以这种方式创建的 M 确实是满足条件的最小数字。 (或者反驳 - 我可能错了,特别是在 N 0 = 0的情况下,虽然我没有看到我在哪里错了。)