给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C,H,O,N,原子量分别为12.01,1.008,16.00,14.01(单位:g/mol)。例如,C6H5OH的分子量为94.108g/mol。
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
string n;
cin>>n;
double sum=0;
map<char,double>m={{'C',12.01},{'H',1.008},{'O',16.00},{'N',14.1}};
for(int i=0;i<n.size();){
if(isdigit(n[i+1])){
sum+=(n[i+1]-'0')*m[n[i]];
i+=2;
}else {
sum+=m[n[i]];
i++;
}
}
cout<<sum<<endl;
return 0;
}
通过定义一个map可以快速定位当前元素的分子量是多少,然后通过自己定义i的增加量达到对(字符+数字)和(单字符)结构的识别