UVa1586

来源:互联网 发布:淘宝双十二报名入口 编辑:程序博客网 时间:2024/04/19 11:50
#pragma warning(disable:4996)#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<algorithm>#include<iostream>#include<time.h>#include<set>#include<sstream>#include<functional>#include<cassert>#include<list>#include<iterator>#include<utility>#include <stdexcept>  #include <sstream>#include <fstream> #include<unordered_map>#include<unordered_set>#include<ctype.h>#include<map>using namespace std;using namespace std::placeholders;map<char, double> m = { { 'C', 12.01 }, { 'H', 1.008 }, { 'O', 16.00 }, { 'N', 14.01 } };int main(){    int T;    ios::sync_with_stdio(false);    cin >> T;    while (T--)    {        string s;        cin >> s;        for (int i = 0; i <s.size()-1; i++)        {            if (isalpha(s[i]) && isalpha(s[i + 1]))                s.insert(i + 1, "1");           }        if (isalpha(s[s.size()-1]))        {            s.insert(s.size(),"1");        }        int len = s.size();        int ans;        double sum = 0;        double temp1 = 0;        int temp2 = 0;        for (int i = 0; i < len; i++)        {            ans = 0;            if (isalpha(s[i]))            {                temp1 = m[s[i]];            }            for (int j = i + 1; j < len; j++)            {                if (!isalpha(s[j]))                    ans++;                else                    break;            }            temp2 = stoi(s.substr(i + 1, ans));            sum += temp2*temp1;            i += ans;        }        printf("%.3f\n", sum);    }    return 0;}
0 0