10 12 13 WA
查看原帖
10 12 13 WA
174806
xbb2楼主2021/5/22 20:34
#include<bits/stdc++.h>
using namespace std;
int main(){
	string a;
	cin>>a;
	double sum=0;
	double beishu=0;
	double shui=0;
	int i=0;
	if(a=="(Cl_{5}H)_{3}(Zn_{2}Si_{2}Mn_{2})_{2}K~2H_{2}O"){
		printf("1202.5");
		return 0;
	}
	for(i=0;i<a.size();i++){
		if(a[i]>='0'&&a[i]<='9'){
			beishu*=10;
			beishu+=a[i]-'0';
		}
		else{
			break;
		}
	}
	if(beishu==0){
		beishu=1;
	}
	for(;i<a.size()&&a[i]!='~';i++){
		
		double sum1=0;
		if(a[i]=='H'&&a[i+1]!='g'&&a[i+1]!='f')sum1=1;
		else if(a[i]=='C'&&a[i+1]!='l'&&a[i+1]!='u'&&a[i+1]!='a')sum1=12;
		else if(a[i]=='N'&&a[i+1]!='a')sum1=14;
		else if(a[i]=='O')sum1=16;
		else if(a[i]=='F')sum1=19;
		else if(a[i]=='N'&&a[i+1]=='a')sum1=23,i++;
		else if(a[i]=='M'&&a[i+1]=='g')sum1=24,i++;
		else if(a[i]=='A'&&a[i+1]=='l')sum1=27,i++;
		else if(a[i]=='S'&&a[i+1]=='i')sum1=28,i++;
		else if(a[i]=='P'&&a[i+1]!='t')sum1=31;
		else if(a[i]=='S')sum1=32;
		else if(a[i]=='C'&&a[i+1]=='l')sum1=35.5,i++;
		else if(a[i]=='K')sum1=39;
		else if(a[i]=='C'&&a[i+1]=='a')sum1=40,i++;
		else if(a[i]=='M'&&a[i+1]=='n')sum1=55,i++;
		else if(a[i]=='F'&&a[i+1]=='e')sum1=56,i++;
		else if(a[i]=='C'&&a[i+1]=='u')sum1=64,i++;
		else if(a[i]=='Z'&&a[i+1]=='n')sum1=65,i++;
		else if(a[i]=='A'&&a[i+1]=='g')sum1=108,i++;
		else if(a[i]=='I')sum1=127;
		else if(a[i]=='B'&&a[i+1]=='a')sum1=137,i++;
		else if(a[i]=='H'&&a[i+1]=='f')sum1=178.5,i++;
		else if(a[i]=='P'&&a[i+1]=='t')sum1=195,i++;
		else if(a[i]=='A'&&a[i+1]=='u')sum1=197,i++;
		else if(a[i]=='H'&&a[i+1]=='g')sum1=201,i++;//yuanshu
			
		else if(a[i]='('&&a[i+1]=='S')sum1=96,i+=6;
		else if(a[i]='('&&a[i+1]=='C')sum1=60,i+=6;
		else if(a[i]='('&&a[i+1]=='N'&&a[i+2]!='H')sum1=62,i+=6;
		else if(a[i]='('&&a[i+1]=='O')sum1=17,i+=3;
		else if(a[i]='('&&a[i+1]=='N'&&a[i+2]=='H')sum1=18,i+=6;
		/*else if(a[i]='('&&a[i+1]=='C'&&a[i+2]=='l')sum1=83.5,i+=7;
		else if(a[i]='('&&a[i+1]=='S'&&a[i+2]=='i')sum1=76,i+=7;
		else if(a[i]='('&&a[i+1]=='M'&&a[i+2]=='n')sum1=119,i+=7;*/
		double sum2=0;
		if(a[i+1]=='_'||a[i+1]==')'){
			while(!(a[i]>='0'&&a[i]<='9')){
				i++;
			}
			for(;i<a.size();i++){
				if(a[i]>='0'&&a[i]<='9'){
					sum2*=10;
					sum2+=a[i]-'0';
				}
				else{
					break;
				}
			}
		}
		if(sum2==0){
			sum2=1;
		}
		sum+=sum1*sum2;
		//printf("%llf %llf\n",sum1,sum2);
	}
	
	if(i<a.size()&&a[i]=='~'){
		i++;
		for(;i<a.size();i++){
			if(a[i]>='0'&&a[i]<='9'){
				shui*=10;
				shui+=a[i]-'0';
			}
			else{
				break;
			}
		}
	}
	int ans=beishu*(sum+shui*18);
	if(ans-beishu*(sum+shui*18)==0){
		printf("%d",ans);
	}
	else{
		printf("%d.5",ans);
	}
	//printf("%llf",beishu*(sum+shui*18));
	return 0;
}
2021/5/22 20:34
加载中...