</pre><img src="https://img-blog.csdn.net/20150924210712844?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></h3><div></div><div>accode;</div><div><pre name="code" class="cpp">#include <map>
#include <queue>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <cctype>
#define rd(x) scanf("%d",&x)
#define rd2(x,y) scanf("%d%d",&x,&y)
#define ll long long int
#define maxn 100005
#define mod 1000000007
#define INF 0x3f3f3f3f //int×î´óÖµ
#define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;++i)
#define MT(x,i) memset(x,i,sizeof(x))
#define PI acos(-1.0)
#define E exp(1)
using namespace std;
int main(){
double on[maxn];
on['C']=12.01;
on['H']=1.008;
on['O']=16.00;
on['N']=14.01;
int loop;
rd(loop);
while(loop--){
string a;
cin>>a;
double sum=0;
FOR(i,0,a.length()-1){
if(isalpha(a[i])){
double n=on[a[i]];
if(isalpha(a[i+1])||i+1==a.length()){
sum+=n;
continue;
}
else {
int z=0,t=0;
int pos=i;
while(1){
if(!isdigit(a[pos+1])||pos+1==a.length())
break;
pos++;
int k=a[pos]-48;
z=z*10+k;
}
i+=t;
sum+=n*z;
}
}
}
printf("%.3lf\n",sum);
}
return 0;
}
</pre><img src="https://img-blog.csdn.net/20150924210712844?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></h3><div></div><div>accode;</div><div><pre name="code" class="cpp">#include <map>
#include <queue>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <cctype>
#define rd(x) scanf("%d",&x)
#define rd2(x,y) scanf("%d%d",&x,&y)
#define ll long long int
#define maxn 100005
#define mod 1000000007
#define INF 0x3f3f3f3f //int×î´óÖµ
#define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;++i)
#define MT(x,i) memset(x,i,sizeof(x))
#define PI acos(-1.0)
#define E exp(1)
using namespace std;
int main(){
double on[maxn];
on['C']=12.01;
on['H']=1.008;
on['O']=16.00;
on['N']=14.01;
int loop;
rd(loop);
while(loop--){
string a;
cin>>a;
double sum=0;
FOR(i,0,a.length()-1){
if(isalpha(a[i])){
double n=on[a[i]];
if(isalpha(a[i+1])||i+1==a.length()){
sum+=n;
continue;
}
else {
int z=0,t=0;
int pos=i;
while(1){
if(!isdigit(a[pos+1])||pos+1==a.length())
break;
pos++;
int k=a[pos]-48;
z=z*10+k;
}
i+=t;
sum+=n*z;
}
}
}
printf("%.3lf\n",sum);
}
return 0;
}