UVa 1586 Nolar Mass(习题3-2)

来源:互联网 发布:用狗爹注册域名 编辑:程序博客网 时间:2024/06/17 09:44

这道题的关键点应该就是在原子符号中间的数字的地方了吧

注意之前出现过的原子在接下来也会出现 统计原子数量,计算

没记错的话这道题好像借鉴了之前网上的一个代码

代码:

#include<cstring>  #include<iostream>  #include<iostream>using namespace std;    const int maxn=200;  char s[maxn];  double ans[maxn];    int num(int m,int n)  {      int temp;      for(int i=m;i<n;i++)          if(s[i]<='9'&&s[i]>='0')  temp=i;          else  break;       int n=0;      for(int i=pos;i<=temp;i++)  //字符串转整数型          n=n*10+(s[i]-'0');      return n-1;  }    int main()  {      int t;      cin>>t;    while(t--)      {          memset(ans,0,sizeof(ans));          cin>>s;          int len=strlen(s);          int flag=0;          for(int i=0;i<len;i++)          {              if(s[i]=='C')  ans[i]=12.01;              if(s[i]=='H')  ans[i]=1.008;              if(s[i]=='O')  ans[i]=16.00;              if(s[i]=='N')  ans[i]=14.01;              if(s[i]>='1'&&s[i]<='9'&&flag==0)              {                  ans[i]=ans[i-1]*num(i,len);   //计算分子量                 flag=1;              }              if(!(s[i]>='1'&&s[i]<='9'))                  flag=0;          }          double sum=0;          for(int i=0;i<len;i++)   sum+=ans[i];        printf("%.3f\n",sum);      }      return 0;  }  


0 0
原创粉丝点击