DEV Community

Discussion on: Daily Challenge #119 - Adding Big Numbers

Collapse
 
jbristow profile image
Jon Bristow • Edited

Python for arbitrarily large numbers represented as strings:

def large_sum(a: str, b: str) -> str:

    if len(b) < len(a):
        return large_sum(b, a)

    alist = [int(c) for c in reversed(a)]
    blist = [int(c) for c in reversed(b)]

    for _ in range(0, len(alist) - len(blist)):
        blist.append(0)

    overflow = 0
    output = []
    for ax, bx in zip(alist, blist):
        sumval = ax + bx + overflow
        overflow = int((sumval) / 10)
        output.append(sumval % 10)

    if overflow != 0:
        output.append(overflow)

    return "".join(str(i) for i in reversed(output))


print(large_sum("1234", "3456"))
print(
    large_sum(
        "1234567890123456789012345678901234567890",
        "456789012345678901234567890123456789012345678901234567890123",
    )
)
print(large_sum("44", "2"))