您的位置:首页 > 其它

uva 1586 Molar mass

2016-04-09 21:23 204 查看
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int change(char ch)
{
return ch-'1';
}
int main()
{
int t;
cin>>t;
while(t--)
{
string a;
cin>>a;
double m=0;
double sum=0;
double c[100],d[100];
memset(c,0,sizeof(c));
for(int i=0;i<(int)a.length();i++)
d[i]=1;
if((int)a.length()==1)
{
if(a[0]=='C') {sum=12.010;m=0;}
if(a[0]=='H') {sum=1.008;m=0;}
if(a[0]=='O') {sum=16.000;m=0;}
if(a[0]=='N') {sum=14.010;m=0;}
}
else
{
for(int i=0;i<(int)a.length();i++)
{
if(a[i]=='C') {c[i]=12.010;m=0;}
else if(a[i]=='H') {c[i]=1.008;m=0;}
else if(a[i]=='O') {c[i]=16.000;m=0;}
else if(a[i]=='N') {c[i]=14.010;m=0;}
else
{
if(m==0) {d[i-1]+=change(a[i]);m=1;}
else{d[i-2]=d[i-2]*10+(a[i]-'0');}
}
}
}
for(int i=0;i<(int)a.length();i++)
{
if(c[i]) sum+=c[i]*d[i];
}
printf("%.3f\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: