#include using namespace std; #define maxn 85 char s[maxn]; int main() { int T; cin >> T; while (T--) { int num_c = 0, num_h = 0, num_o = 0, num_n = 0; //分别记录各个化学元素的个数 float sum; cin >> s; int n = strlen(s); s[n] = 1; for (int i = 0; i < n; i++) { if (isalpha(s[i])) { //判断是否是字母 switch (s[i]) { case 'C': if (isdigit(s[i + 1])) { //判断字母后面2位是否为数字 if (isdigit(s[i + 2])) num_c += (s[i + 1] - '0') * 10 + (s[i + 2] - '0'); else num_c += (s[i + 1] - '0'); } else num_c++; break; case 'H': if (isdigit(s[i + 1])) { if (isdigit(s[i + 2])) num_h += (s[i + 1] - '0') * 10 + (s[i + 2] - '0'); else num_h += (s[i + 1] - '0'); } else num_h++; break; case 'O': if (isdigit(s[i + 1])) { if (isdigit(s[i + 2])) num_o += (s[i + 1] - '0') * 10 + (s[i + 2] - '0'); else num_o += (s[i + 1] - '0'); } else num_o++; break; case 'N': if (isdigit(s[i + 1])) { if (isdigit(s[i + 2])) num_n += (s[i + 1] - '0') * 10 + (s[i + 2] - '0'); else num_n += (s[i + 1] - '0'); } else num_n++; break; default: break; } } else continue; //当前数组元素为数字,则直接进入下次循环 } sum = 12.01 * num_c + 1.008 * num_h + 16.00 * num_o + 14.01 * num_n; cout << fixed << setprecision(3) << sum << endl; //小数点后面保留三位数字 } return 0; }