1 #include<iostream> 2 #include<iomanip> 3 #include<string> 4 #include<cctype> 5 using namespace std; 6 const int maxn = 1010; 7 8 void get_num(int &num,string c,int j) 9 { 10 while (isdigit(c[j]) && c[j]) 11 { 12 num = num*10 + (c[j]-'0'); 13 j++; 14 } 15 } 16 17 int main(void) 18 { 19 string c; 20 int T; 21 cin >> T; 22 for (int i = 0; i < T; i++) 23 { 24 double count = 0; 25 cin >> c; 26 for (int j = 0; j < c.size(); j++) 27 { 28 if (isalpha(c[j])) 29 { 30 if (isdigit(c[j+1])) 31 { 32 int num = 0; 33 get_num(num,c,j+1); 34 switch(c[j]) 35 { 36 case 'C' : count += 12.01*num; break; 37 case 'H' : count += 1.008*num; break; 38 case 'O' : count += 16.00*num; break; 39 case 'N' : count += 14.01*num; break; 40 } 41 } 42 else { 43 switch(c[j]) 44 { 45 case 'C' : count += 12.01; break; 46 case 'H' : count += 1.008; break; 47 case 'O' : count += 16.00; break; 48 case 'N' : count += 14.01; break; 49 } 50 } 51 } 52 } 53 cout << fixed << setprecision(3) << count << endl; 54 } 55 return 0; 56 }