Uva-1586. Molar mass

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/82078959

Uva-1586. Molar mass题解

欢迎访问我的Uva题解目录https://blog.csdn.net/richenyunqi/article/details/81149109

题目描述

Uva-1586. Molar mass题目描述

题意解析

给出分子式,求分子质量。本题中分子式只包含4种原子:C、H、O、N。

C++代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int T;
    string s;
    scanf("%d",&T);
    unordered_map<char,double>m={//存储原子和对应的原子质量
        {'C',12.01},{'H',1.008},{'O',16.00},{'N',14.01}
    };
    while(T--){
        cin>>s;
        double result=0.0;
        for(int i=0;i<s.size();){
            int j=i+1;//变量j用来寻找字符s[i]后的第一个字母的位置
            while(j<s.size()&&isdigit(s[j]))++j;
            if(j==i+1)//i,j之间没有数字
                result+=m[s[i]];//加一份原子质量
            else//i,j之间有数字
                result+=m[s[i]]*stoi(s.substr(i+1,j-i));
            i=j;
        }
        printf("%.3f\n",result);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/richenyunqi/article/details/82078959