题目描述
输入格式
无
输出格式
无
题意翻译
现给你若干个分子式需要你求分子量。
例如:C6H5OH的分子量为12.01*6+1.008*5+16.00+1.008=94.108g/mol。
(ps:数字为数字前面元素的下标,所有分子式均无括号例如:2OH=2*16.00+1.008)
输入输出格式
输入:
输入n(2<=n<=99)
接下来n行为分子式
输出:
输出每个分子的分子式
输入输出样例
输入
4 C C6H5OH NH2CH2COOH C12H22O11输出
12.010 94.108 75.070 342.296
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
string ans;
int cnt=1;double ia=0;
cin>>ans;
for(int j=0;j<ans.size();j++){
if(ans[j]=='C'||ans[j]=='H'||ans[j]=='O'||ans[j]=='N'){
if(ans[j+1]>='1'&&ans[j+1]<='9'){
cnt=ans[j+1]-'0';
if(ans[j+2]>='1'&&ans[j+2]<='9'){
cnt=cnt*10+ans[j+2]-'0';
if(ans[j+3]>='1'&&ans[j+3]<='9'){
cnt=cnt*10+ans[j+2]-'0';
}
}
}
if(ans[j]=='C'){
ia=ia+12.010*cnt;
}else if(ans[j]=='H'){
ia=ia+1.008*cnt;
}else if(ans[j]=='O'){
ia=ia+16.00*cnt;
}else {
ia=ia+14.01*cnt;
}//cout<<ia<<" "<<cnt<<endl;
cnt=1;
}
}printf("%.3lf\n",ia);
}
}