混合进制加法算法
提交数: 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
来源: 原创