題目連結:https://vjudge.net/problem/51477/origin
隻有四種原子,統計每個原子的個數,再分别乘上對應分子量就行;
上代碼
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int T;
double sum;
char s[];
double a[]={,,,};
int b[];
int main(){
scanf("%d\n",&T);
while(T--){
sum=;
b[]=;b[]=;b[]=;b[]=;
scanf("%s",s);
int len=strlen(s);
for(int i=;i<len;i++){
if(s[i]=='C'){
if(s[i+]<='9'&&s[i+]>='0'){
if(s[i+]<='9'&&s[i+]>='0'){
b[]+=((s[i+]-'0')+(s[i+]-'0')*);
}
else{
b[]+=s[i+]-'0';
}
}
else
b[]+=;
}
if(s[i]=='H'){
if(s[i+]<='9'&&s[i+]>='0'){
if(s[i+]<='9'&&s[i+]>='0'){
b[]+=((s[i+]-'0')+(s[i+]-'0')*);
}
else{
b[]+=s[i+]-'0';
}
}
else
b[]+=;
}
if(s[i]=='O'){
if(s[i+]<='9'&&s[i+]>='0'){
if(s[i+]<='9'&&s[i+]>='0'){
b[]+=((s[i+]-'0')+(s[i+]-'0')*);
}
else{
b[]+=s[i+]-'0';
}
}
else
b[]+=;
}
if(s[i]=='N'){
if(s[i+]<='9'&&s[i+]>='0'){
if(s[i+]<='9'&&s[i+]>='0'){
b[]+=((s[i+]-'0')+(s[i+]-'0')*);
}
else{
b[]+=s[i+]-'0';
}
}
else
b[]+=;
}
}
for(int i=;i<;i++){
sum+=a[i]*b[i];
}
printf("%.3f\n",sum);
}
return ;
}