SPOJ Problem Set (classical) 6. Simple Arithmetics,spojarithmetics,题目的详细要求看这里:h


题目的详细要求看这里:http://www.spoj.com/problems/ARITH/

觉得看英文麻烦的可以看这里:http://blog.csdn.net/tiaotiaoyly/article/details/2087975

看时间是一道很老的题目,但是网上资料并不多,而且根据第二个链接我注意的地方都注意了,但是仍然WA,实在是要睡觉了,所以交给诸位网友啦~

下面是源码(如果你忍心看的话)

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 

编橙之家文章,

评论关闭