将数字的数字增加一个

hky*_*404 2 python modular-arithmetic

我正在研究这个看似简单的问题,我需要在数字的每个数字上加一个.示例:number = 1234; 输出= 2345

这很简单,但当9是其中一个数字时,那么根据加法则,9将被0替换,1将被添加到左边的数字(9 + 1 = 10,因此,地方值= 0 &carry over = 1)例如:number = 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))
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下,我应该使用什么逻辑?我可以看到模块化算术的一些东西,但不确定如何实现它.谢谢 :)

Abh*_*jit 7

一种简单的方法如下

考虑一个数字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
Run Code Online (Sandbox Code Playgroud)

编辑:利用功率公式求和来简化一点

>>> def foo(N):
    return N + ((10**len(str(N)) - 1) // 9)
Run Code Online (Sandbox Code Playgroud)