UVa-1586 - Molar mass:simple

来源:互联网 发布:太极考研知乎 编辑:程序博客网 时间:2024/05/04 01:55


//UVa#include<algorithm>#include<cctype>#include<cstdio>#include<cstring>#include<ctype.h>#include<fstream>#include<iostream>#include<map>#include<vector>//#define LOCALusing namespace std;#define maxn 20005int main(){#ifdef LOCAL    freopen("in.txt","r",stdin);    //freopen("out.txt","w",stdout);#endif // LOCAL    int T;    char s[90];    map<char,double> M;    M['C']=12.01;M['H']=1.008;M['O']=16.00;M['N']=14.01;    scanf("%d",&T);    while(T--){        scanf("%s",s);        int l=strlen(s);        double ans=0;        if(l==1)            printf("%.3f\n",M[s[0]]);        else{            for(int i=0;i<l;i++){                if(isalpha(s[i]))                    ans+=M[s[i]];                else{                    if(isdigit(s[i+1]))                        ans+=((s[i]-'0')*10+(s[i+1]-'0')-1)*M[s[i-1]];                    else                        ans+=((s[i]-'0')-1)*M[s[i-1]];                }            }            printf("%.3f\n",ans);        }    }}


0 0
原创粉丝点击