Run ID:49075
提交时间:2023-06-19 20:38:48
#include <cstdio> #include <iostream> #include <cstring> using namespace std; int zimu(char ch) { switch(ch) { case 'H':return 1;break; case 'C':return 12;break; case 'N':return 14;break; case 'O':return 16;break; case 'F':return 19;break; case 'P':return 31;break; case 'S':return 32;break; case 'K':return 39;break; default:return 0;break; } } int main() { int n; cin >> n; getchar(); while(n--) { char s[100]; cin >> s; int l = strlen(s); int t=0,sum=0,flag,c=0; for(int i = 0;i<l;i++) { c=0; flag =0; t=0; while(s[i+1]>='0'&&s[i+1]<='9') { flag=1; t = t*10 + s[i+1]-'0'; i++; c++;//记录字母后的数字个数 } if(flag)//根据字母后面是否有数字进行求和 { sum = sum + zimu(s[i-c])*t; } else { sum = sum + zimu(s[i]); } } cout << sum <<endl; } return 0; }