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

 

你可能感兴趣的:(uva)