B 分子
我用做的.
思路就是先把字符串用左括号分开,形成列表。然后按照规则去加原子质量。
是列表中一项的一个分子的原子质量和。
是列表中一项的原子质量和。
是列表原子质量和。
- 凡是数字和右括号都省略。
其中有一步是判断分子后面数字是几的,挺重要。
代码挺好懂的。
要是用C++的话,可以用栈做,将字母转换成数字的话,就是数字字符-'0'就可以获得类型的这个数字。
num=['0','1','2','3','4','5','6','7','8','9']
s=list(input().split("("))
cnt=0
#print(s)
for i in s:
ans=0
tmp=0
for j in range(len(i)):
ans=0
n=''
c=j+1
while c<len(i) and i[c] in num:
n=n+i[c]
c+=1
if i[j]==")":
if n=='':
continue
ans+=tmp*(int(n)-1)
if i[j]=="H" and n!='':
ans+=1*int(n)
elif i[j]=="H":
ans+=1
if i[j]=="C" and n!='':
ans+=13*int(n)
elif i[j]=="C":
ans+=13
if i[j]=="O" and n!='':
ans+=17*int(n)
elif i[j]=="O":
ans+=17
tmp+=ans
cnt+=ans
print(cnt)

京公网安备 11010502036488号