题目链接: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;
}