https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4461

#include <iostream>

#include <iomanip>

using namespace std;

int main()
{
    double numC=12.01;
    double numH=1.008;
    double numO=16.00;
    double numN=14.01;
    int T;
    string s;
    cin>>T;
    while(T--)
    {
        double sum=0,temp=0;
        cin>>s;
        for(int i=0;i<s.length();i++)
        {
            if(isalpha(s[i]))
            {
                switch(s[i])
                {
                    case 'C':
                        temp=numC;
                        break;
                    case 'H':
                        temp=numH;
                        break;
                    case 'O':
                        temp=numO;
                        break;
                    case 'N':
                        temp=numN;
                        break;
                }
                if(isalpha(s[i+1]) || s[i+1]=='\0')
                {
                    sum+=temp;
                }
            }
            if(isdigit(s[i]))
            {
                if(s[i+1]=='\0' || isalpha(s[i+1]))
                {
                    int n=(int)s[i];
                    n=n-48;
                    sum+=(temp*n);
                }
                else if(isdigit(s[i+1]))
                {
                    int n=(int)s[i];
                    n=n-48;
                    sum+=(temp*n*10);
                }
            }
        }
        cout<<fixed<<setprecision(3)<<sum<<endl;        
    }

 

※查詢所有題目及解答如下※

https://jennaweng0621.pixnet.net/blog/post/403629785

※查詢其他CPE題目如下※

http://jennaweng0621.pixnet.net/blog/category/6372301

arrow
arrow
    文章標籤
    UVA1586 Molar mass
    全站熱搜

    楓綺 發表在 痞客邦 留言(0) 人氣()