混合进制加法算法

提交数: 415, 通过率: 66.75%, 平均分: 66.93

题目描述:

输入不同进制数的加法算式,得到十进制值的计算结果。  

输入格式:

一行表达式字符串。

输出格式:

一个正整数值,表示最后的运算结果。

数据范围:

结果在100,000以内。

样例输入:

1011B+2AH+123D=

样例输出:

176

提示:

一、使用栈数据结构,完成本题。

s = input()
jz = {'B':2,'H':16,'D':10}  #只包括二进制、十进制、十六进制
st = [0]*100
top = -1
res = 0
for i in s:
    if i not in '+=':
        top += 1
        st [ top ] = i
    else:
        m = jz[ ______________ ]   #空1
        top -= 1
        x = 0
        ____________       #空2
        while _______________ :    #空3
            t = st[top]
            top -= 1
            if '0' <= t <= '9':
                t = int(t)
            else:
                t = _________________    #空4
            x = _________________     #空5
            k *= m    #注意这里让k的权重多一次
        res = res+x
print(res)

二、使用队列数据结构,完成本题。

s = input()
jz = { 'B': 2, 'H':16, 'D': 10 }
q = [0]*100
head = tail = 0
res = 0
for i in s:
    if i not in'+=':
        ____________ #空1
        tail+=1
    else:
        m = jz[      ]   #空2
        tail -= 1
        x = 0
        while ____________:  #空3
            t = q[head]
            head += 1
            if '0' <= t <= '9':
                t = int(t)
            else:
                t = ___________  #空4
            x = __________   #空5
        res = res+x
print( res )
时间限制: 1000ms
空间限制: 256MB

来源: 原创