UVa 1586 Molar mass

题意:给出物质的分子式,计算它的相对原子质量

因为原子的个数是在2到99之间的,所以找出一个是字母之后,再判断一下它的后两位就可以找出这种原子的个数了

 1 #include<iostream>  
 2 #include<cstdio>  
 3 #include<cstring>  
 4 #include<algorithm>  
 5 using namespace std;
 6 
 7 char s[1005];
 8 double yuansu[5];
 9 
10 
11 int main()
12 {
13     int ncase,i,ans,len;
14     double tmp=0;
15     scanf("%d",&ncase);
16     yuansu[2]=12.01;
17     yuansu[7]=1.008;
18     yuansu[14]=16.00;
19     yuansu[13]=14.01;
20     while(ncase--)
21     {
22         cin>>s;
23         len=strlen(s);
24         tmp=0;
25         for(i=0;i<len;i++)
26         {
27             ans=0;
28             if(isalpha(s[i]))
29             {
30                 if(isdigit(s[i+2])&&isdigit(s[i+1]))
31                 ans+=s[i+2]-'0'+(s[i+1]-'0')*10;
32                 else if(isdigit(s[i+1]))
33                 ans+=s[i+1]-'0';
34                 else
35                 ans=1;            
36             }        
37             tmp+=ans*1.0*yuansu[s[i]-'A'];
38         }
39         printf("%.3lf\n",tmp);        
40     }
41 }
View Code

 

posted @ 2015-02-26 15:12  sequenceaa  阅读(130)  评论(0编辑  收藏  举报