#13WA求助
查看原帖
#13WA求助
535134
12wasd3456zxc楼主2022/1/30 21:40

RT

只有 #13 WA

记录:评测记录

代码:

#include<bits/stdc++.h>
using namespace std;
unordered_map<string,int> Ar
{
{"H",10},
{"C",120},
{"N",140},
{"O",160},
{"F",190},
{"Na",230},
{"Mg",240},
{"Al",270},
{"Si",280},
{"P",310},
{"S",320},
{"Cl",355},
{"K",390},
{"Ca",400},
{"Mn",550},                         
{"Cu",640},
{"Zn",650},
{"Ag",1080},
{"I",1270},
{"Ba",1370},
{"Hf",1785},
{"Pt",1950},
{"Au",1970},
{"Hg",2010}
};

int ana(char* s)
{
	char* xp=strchr(s,'~');
	//printf("DEAL WITH:<%s>\n",s);
	if(xp!=NULL)
	{
		*xp=0;
		return ana(s)+ana(xp+1);
	}
	if(!isalpha(*s))
	{
		int rel;
		char tmp[120];
		sscanf(s,"%d%s",&rel,tmp);
		return rel*ana(tmp);
	}
	int ans=0;int now=0;
	for(char* r=s;*r;r++)
	{
		if(isalpha(*r))
		{
			ans+=now;
			now=0;
			char up[4]{};
			up[0]=*r;
			if(islower(*(r+1)))
			{
				++r;
				up[1]=*r;
			}
			now=Ar[string(up)];
			//printf("FIND:<%s> NOW=%d\n",up,now);
		}
		else if(*r=='(')
		{
			char*q=strchr(r,')');
			*q=0;
			ans+=now;
			now=ana(r+1);
			r=q+1;
		}
		if (*r=='_')
        {
            r+=2;
            int p=0;
            while(isdigit(*r))p=p*10+*(r++)-'0';
            now*=p;
			ans+=now;
			now=0;
        }
	}
	ans+=now;
	//printf("RETURN %d\n",ans);
	return ans;
}

char cc[599];

int main()
{
	scanf("%s",cc);
	int as=ana(cc);
	printf("%d",as/10);
	if((as/5)&1)printf(".5");
	return 0;
}

验证码:验证码

2022/1/30 21:40
加载中...