题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=448&page=show_problem&problem=4461
#include <stdio.h>
#include <string.h>
int main(){
// C H O N
char e[4]={'C','H','O','N'};
float m[4]={12.01,1.008,16.00,14.01};
// C H O N
int num[4];
char str[85];
int n;
scanf("%d",&n);
while(n--){
scanf("%s",str);
memset(num,0,sizeof(m));
int len=strlen(str);
int pre=0,current=0;
int v=0;
for(int i=0;i<len;i++){
for(int j=0;j<4;j++){
if(str[i]==e[j]){
pre=current;
current=j;
num[current]+=1;
}
}
if(str[i]>='0'&&str[i]<='9'){
v=v*10+(str[i]-'0');
}
else{
if(v) --v;
num[pre]+=v;
v=0;
}
}
if(v) num[current]+=--v;
/*
for(int i=0;i<4;i++){
printf("%d--",num[i]);
}
*/
float ans=0;
for(int i=0;i<4;i++){
ans+=num[i]*m[i];
}
printf("%.3f\n",ans);
}
return 0;
}