求助,#4,#7,#9,#26 WA
查看原帖
求助,#4,#7,#9,#26 WA
371219
Luboyan_楼主2021/10/21 21:27
#include<iostream>
#include<string>
#include<stack>
using namespace std;
string s;
int wt;
bool cf=false,q=false,sp=false;
double ans,k,tt;
int fz(char k){
	if(k=='H')return 1;
	if(k=='C')return 12;
	if(k=='N')return 14;
	if(k=='O')return 16;
	if(k=='F')return 19;
	if(k=='P')return 31;
	if(k=='S')return 32;
	if(k=='K')return 39;
	if(k=='I')return 127;
}
double fz2(char x,char y){
	if(x=='N'&&y=='a')return 23;
	if(x=='M'&&y=='g')return 24;
	if(x=='A'&&y=='l')return 27;
	if(x=='S'&&y=='i')return 28;
	if(x=='C'&&y=='l')return 35.5;
	if(x=='C'&&y=='a')return 40;
	if(x=='M'&&y=='n')return 55;
	if(x=='F'&&y=='e')return 56;
	if(x=='C'&&y=='u')return 64;
	if(x=='Z'&&y=='n')return 65;
	if(x=='A'&&y=='g')return 108;
	if(x=='B'&&y=='a')return 137;
	if(x=='H'&&y=='f')return 178.5;
	if(x=='P'&&y=='t')return 195;
	if(x=='A'&&y=='u')return 197;
	if(x=='H'&&y=='g')return 201;
}
int sl(int pos){
	int a;
	while(s[++pos]>='0'&&s[pos]<='9'){
		a=a*10+s[pos]-'0';
	}
	return a;
}
int main(){
	cin>>s;
	for(int i=0;i<s.size();i++){
		if((s[i]>='a'&&s[i]<='z')||s[i]=='{'||s[i]=='}')continue;
		if(s[i]=='('){
			ans+=k;
			k=0;
			q=true;
		}
		if(s[i]>='A'&&s[i]<='Z'){
			if(cf==true&&q==false)ans+=k;
			if(q==true)tt+=k;
			if(s[i+1]>='a'&&s[i+1]<='z')k=fz2(s[i],s[i+1]);
			else k=fz(s[i]);
			cf=true;
		}
		if(s[i]=='_'){
			if(sp==true){
				sp=false;
				continue;
			}
			k=k*sl(i+1);
		}
		if(s[i]==')'){
			tt+=k;
			if(s[i+1]=='_')k=tt*sl(i+2);
			else k=tt;
			tt=0;
			q=false;
			sp=true;
		}
		if(s[i]=='~'){
			ans+=k;
			k=0;
			if(s[i+1]>='0'&&s[i+1]<='9'){
				wt=sl(i);
			}
			else wt=1;
			ans=ans+wt*18;
			break;
		}
	}
	if(k!=0&&cf==true)ans+=k;
	cout<<ans;
	return 0;
}
2021/10/21 21:27
加载中...