解题思路:
注意事项:
参考代码:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复