首页 > 代码库 > (UVA)1586 --Molar Mass(分子量)

(UVA)1586 --Molar Mass(分子量)

题目链接:http://vjudge.net/problem/UVA-1586

思路:统计一个分子式中CHON出现的总次数,乘上相对原子量后求和。要注意的是CH4这样的C后面的1默认不出现,以及C4H10这样的后面的数字是两位的情况。

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int t,len;
 9     double c,h,o,n;
10     char s[80];
11     scanf("%d",&t);
12     while(t--)
13     {
14         scanf("%s",s);
15         len = strlen(s);
16         int i=0,num=0;
17         c=0; h=0; o=0; n=0;
18         while(i<len)
19         {
20             if(s[i]>=A&&s[i]<=Z)
21             {
22                 if (s[i+1]>=0&&s[i+1]<=9)
23                 {
24                 num=num*10+s[i+1]-0;
25                 if (s[i+2]>=0&&s[i+2]<=9)
26                     num=num*10+s[i+2]-0;
27                 }else num=1;
28             if(s[i]==C) c+=num;
29             if(s[i]==H) h+=num;
30             if(s[i]==O) o+=num;
31             if(s[i]==N) n+=num;
32             num=0;
33             }
34             i++;
35         }
36         printf("%.3lf\n",c*12.01+h*1.008+o*16.00+n*14.01);
37     }
38     return 0;
39 }
View Code

 

(UVA)1586 --Molar Mass(分子量)