我正在解决这个看似简单的问题,我需要在数字的每个数字上加一个。示例:number = 1234; 输出= 2345
这很简单,但是当9是这些数字之一时,则根据加法则,将9替换为0,并在左侧的数字上加上1(9 +1 = 10,因此,位值= 0 &结转= 1)示例:数字= 1239;输出= 2350
number = 1234
s = str(number)
l = []
for num in s:
num = int(num)
num += 1
if num > 9:
num = 0
l.append(num)
else:
l.append(num)
print int(''.join(str(v) for v in l))
有人可以告诉我,我应该使用哪种逻辑?我可以在模块化算术上看到一些东西,但是不确定如何实现。谢谢 :)
一种简单的方法如下
考虑一个数N = a n a n-1 a n-2 ... a 0
然后F(N)= N +(10 n-1 +10 n-2 .. 10 0)= N + int('1'XN)= N +(10 n -1)/(10-1)= N +(10 n -1)/ 9
>>> def foo(N):
return N + int('1'*len(str(N)))
>>> foo(1234)
2345
>>> foo(1239)
2350
编辑:利用幂公式之和简化一点
>>> def foo(N):
return N + ((10**len(str(N)) - 1) // 9)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句