给定一个实数n
,找到最低实数m
,这样n+m
就是真正的回文数。
例如
如果数字是101.099,要添加到0,002,我们得到真正的回文101.101。另一个例子是数字13.31,它已经是一个真正的回文并且必须加0才能保持这种状态。最后一个例子是数字100.9,它应该加0.1,使数字变为101。
有人可以提供算法/一些建议来帮助我解决这个问题吗?
答案 0 :(得分:2)
我假设小数与回文数相关。
观察1:您提供的问题相当于找到大于给定值的最小“真实回文”,然后取这个回文和给定数字的差异。
观察2:由于每个实数只有一个小数点,我们知道数字的小数部分必须是整数部分的镜像。因此,给定整数部分,您可以生成唯一可以与之关联的“真实回文”。例如,如果实际回文的整数部分是123,则回文必须 123.321。
这些观察结果应该是您解决问题的坚实起点:)
答案 1 :(得分:1)
该问题没有更低。
证明:(假设数字是列表的成员)
数字= [a,b,c,d](忽略小数?)
然后你可以附加列表的反面,你就会有一个pallindrome。
回文数= [a,b,c,d,d,c,b,a]
但请注意,我们在0
之间添加d
并保持回文。
我们可以添加无限多的0
s,并且我们得到的数字(..00..00000dcba)总是更小,所以没有更小的实数使得数字成为回文。
答案 2 :(得分:0)
如果您正在寻找提示,我建议您先从左到右检查数字。例如,如果您有数字12,那么您只需添加第一个数字以获得121,这是一个回文。
如果你有983,那么看看9.添加9不会使它成为回文,所以看看8.添加89你将得到一个回文98389。
@pankgeorg在OP中,我认为添加000001实际上只是添加1.因此,您无法在解决方案中附加无限多的0来使其变小(000001 = 1)。