B 分子
同源
https://ac.nowcoder.com/acm/contest/6871/A
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)