Simple Arithmetics

def Add(a, b):
    l = []
    alen = len(a)
    blen = len(b) 
    result = str(int(a) + int(b))
    relen = len(result)
    llen = alen > blen and alen or blen+1
    llen = relen > llen and relen or llen
    l.append(' ' * (llen - alen) + a)
    l.append(' ' * (llen - blen - 1) + '+' + b)
    l.append('-' * llen)
    l.append(' ' * (llen - relen) + result)
    List.append(l)

def Sub(a, b):
    l = []
    alen = len(a)
    blen = len(b)
    result = str(int(a) - int(b))
    relen = len(result)
    llen = alen > blen and alen or blen+1
    l.append(' ' * (llen - alen) + a)
    l.append(' ' * (llen - blen - 1) + '-' + b)
    l.append('-' * llen)
    l.append(' ' * (llen - relen) + result)
    List.append(l)

def Multi(a, b):
    l = []
    alen = len(a)
    blen = len(b)
    result = str(int(a) * int(b))
    relen = len(result)
    llen = relen > blen+1 and relen or blen+1
    _len_bove = alen > blen and alen or blen+1
    _len_below = len(str(int(a) * int(b[-1])))
    _len = _len_bove > _len_below and _len_bove or _len_below
    l.append(' ' * (llen - alen) + a)
    l.append(' ' * (llen - blen - 1) + '*' + b)
    l.append(' ' * (llen - _len) + '-' * _len) 
    for i in range(blen):
        cpt = str(int(a) * int(b[-i-1]))
        l.append(' ' * (llen - len(cpt) - i) + cpt)
    if blen != 1:
        l.append('-' * llen)
        l.append(' ' * (llen - relen) + result)
    List.append(l)

n = input()
List = []
for i in range(n):
    string = raw_input()
    if '+' in string:
        a, b = string.split('+')
        Add(a, b)
    elif '-' in string:
        a, b = string.split('-')
        Sub(a, b)
    elif '*' in string:
        a, b = string.split('*')
        Multi(a, b)

for l in List:
    for i in l:
        print i
    print 

 

posted on 2013-11-14 23:23  SZlibraco  阅读(462)  评论(0编辑  收藏  举报