解题思路:
注意事项:
参考代码:
def check(n,k):#N进制转十进制
ans=0
pro=1#进制
while n!=0:
ans+=n%10*pro
n//=10
pro*=k#每一位都会多乘个k
return ans
def change(n,k):#十进制转N进制
s=''
q=[str(i) for i in range(10)]+[chr(65+i) for i in range(26)]
if n==0:
return 0
while n!=0:
d=n%k
s+=q[d]
n//=k
return s[::-1]
n=int(input())
k=10
p={}#字母表
b=[]#放数
st=[]#记录操作
cnt=1
for i in range(26):
p[chr(65+i)]=10+i
for i in range(1,n+1):
s=input()
if s=='CLEAR':
a=0
st=[]
elif s.startswith('NUM'):
c=list(p.keys())
if s[4] not in c:
b.append(check(int(s[4:]),k))
else:
b.append(check(int(p[s[4]]),k))
if len(b)==1:
a+=b[0]
elif s.startswith('CHANGE'):
k=int(s[7:])
elif s=='ADD':
st.append('ADD')
elif s=='MUL':
st.append('MUL')
elif s=='DIV':
st.append('DIV')
elif s=='MOD':
st.append('MOD')
elif s=='EQUAL':
if len(st)==0:
print(0)
break
else:
for i in st:
if i=='ADD':
a+=b[cnt]
cnt+=1
elif i=='MUL':
a*=b[cnt]
cnt+=1
elif i=='DIV':
a//=b[cnt]
cnt+=1
elif i=='MOD':
a%=b[cnt]
cnt+=1
print(change(a,k))
0.0分
0 人评分