9
简单模拟
#include <iostream>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
map<char,double> mp;
char str[1111];
int main()
{
mp['C']=12.01;
mp['H']=1.008;
mp['O']=16.00;
mp['N']=14.01;
int n;
cin>>n;
getchar();
while(n--)
{
memset(str,'\0',sizeof(str));
gets(str);
double sum=0;
double cont=0;
for(int i=0;str[i]!='\0';i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
cont=mp[str[i]];
if(str[i+1]>='0'&&str[i+1]<='9')
{
int st=0;
for(i=i+1;str[i]!='\0';i++)
{
if(str[i]>='0'&&str[i]<='9')
st=st*10+str[i]-'0';
else
{
sum+=cont*st;
i=i-1;
break;
}
}
if(str[i]=='\0')
{
sum+=cont*st;
}
}
else
{
sum+=cont;
}
}
}
printf("%.3lf\n",sum);
}
return 0;
}