Molar mass UVA
阿新 • • 發佈:2018-12-20
9
簡單模擬
#include <iostream> #include <map> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; map<char,double> mp; char str[1111]; int main() { mp['C']=12.01; mp['H']=1.008; mp['O']=16.00; mp['N']=14.01; int n; cin>>n; getchar(); while(n--) { memset(str,'\0',sizeof(str)); gets(str); double sum=0; double cont=0; for(int i=0;str[i]!='\0';i++) { if(str[i]>='A'&&str[i]<='Z') { cont=mp[str[i]]; if(str[i+1]>='0'&&str[i+1]<='9') { int st=0; for(i=i+1;str[i]!='\0';i++) { if(str[i]>='0'&&str[i]<='9') st=st*10+str[i]-'0'; else { sum+=cont*st; i=i-1; break; } } if(str[i]=='\0') { sum+=cont*st; } } else { sum+=cont; } } } printf("%.3lf\n",sum); } return 0; }