【发布时间】:2019-11-30 20:54:37
【问题描述】:
如果奇数位的数字总和等于偶数位的数字总和,我们称一个数字为“稳定的”。例如 132 或 4059。给定一个数字 N,程序应输出大于 N 的最小/第一个“稳定”数字。例如,如果 N = 4,则答案 = 11,如果 N = 123123,则答案 = 123134。 但限制是 N 可能非常大。 N的位数可以是100。时间限制是1秒。
我的方法是将N作为字符串存储在int类型数组中的每个数字并使用长算法加1,而不是测试数字是否稳定,如果是则输出它,如果否再次添加1并测试如果它是稳定的。这样做直到你得到答案。
它适用于许多测试,但是当oddSum 和EvenSum 之间的差异非常大时,例如9090909090 程序超过时间限制。我想不出其他算法。直觉上,我认为可能有一些模式可以相互交换几个最后的数字,并在必要时为它们添加或减去一些东西,但我不知道。我更喜欢一个好的提示而不是答案,因为我想自己做。
【问题讨论】:
-
看奇数位和偶数位的区别。你能从差异中看出你必须至少增加多少吗? IE。对于 4,区别是 4,这是否告诉您,您不必尝试 5?还是6?或者....
标签: algorithm