uva1586molar mass字母和数
题意:给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C,H,O,N,原子量分别为12.01,1.008,16.00,14.01(单位:g/mol).
思路:做题时没注意到数字最多2位。
#include<cstdio> #include<string.h> #include<ctype.h> #include<cstring> #include<iostream> using namespace std; char x[300]; double mass(char a) { if(a=='C') return 12.01; if(a=='H') return 1.008; if(a=='O') return 16.00; if(a=='N') return 14.01; } void solve() { int len=strlen(x); double sum=0.0,m; x[len]='E'; for(int i=0;i<len;i++) { if(x[i]>'0'&&x[i]<='9') { if(x[i-1]>'0'&&x[i-1]<='9')continue; else { if(x[i+1]>'0'&&x[i+1]<='9')sum+=(((int)(x[i]-'0'))*10+(((int)((x[i+1])-'0'))-1))*m; else sum+=m*(((int)(x[i]-'0'))-1); } } else { m=mass(x[i]); sum+=m; } } printf("%.3lf\n",sum); } int main() { int t; scanf("%d",&t); while(t--) { scanf("%s",x); solve(); memset(x,0,sizeof(x)); } return 0; }