• UVA1586


    HJL是一个从不讽刺人的品学兼优的好孩子,她最近沉迷学习化学而不能自拔。然而计算一个分子的相对分子质量使她烦不胜烦,因此她决定请你写一个程序来帮助她计算这种麻烦的事情。

    已知:
    ①C代表的碳元素的相对原子质量为12.01,H代表的氢元素的相对原子质量为1.008,O代表的氧元素的相对原子质量为16.00,N代表的氮元素的相对原子质量为14.01。
    ②一个分子的相对分子质量等于组成这个分子的所有原子的相对原子质量的和:例如,分子式为C6H5OH的分子的相对分子质量为:12.01*6+1.008*5+16.00+1.008=94.108。

    Input

    输入首先是一个整数n,代表接下来有n个分子式。

    接下来的n行,每行有一个字符串形式的分子式。数据保证字符串的长度不超过90。
    在分子式中,只可能出现C、H、O、N四种字母。
    在分子式中,每个代表元素的字母后面可能会出现数字,这些数字将不小于1且不大于100。

    Output

    对于每组输入,在单独的一行内输出他的相对分子质量,小数点后保留3位(%.3lf)。

    Sample Input

    4
    C
    C6H5OH
    NH2CH2COOH
    C12H22O11

    Sample Output

    12.010
    94.108
    75.070
    342.296
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<cmath>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int main() 
    {
    	string s;  
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		cin>>s;
    		int i,j,t,a[100];
    		double sum=0;
    		int l=s.length();
    		for(i=0;i<l;++i)
    		{
    			t=0;
    			if(s[i]=='C')
    			{
    				for(j=1;j<l;++j)
    				{
    				 	if(s[i+j]>='0'&&s[i+j]<='9')
    						t=t*10+s[i+j]-'0';
    					else
    						break;
    				}
    				if(t==0)
    					t=1;
    				sum+=t*12.01;
    			}
    			else if(s[i]=='H')
    			{
    				for(j=1;j<l;++j)
    				{
    				 	if(s[i+j]>='0'&&s[i+j]<='9')
    						t=t*10+s[i+j]-'0';
    					else
    						break;
    				}
    				if(t==0)
    					t=1;
    				sum+=t*1.008;
    			}
    			else if(s[i]=='O')
    			{
    				for(j=1;j<l;++j)
    				{
    				 	if(s[i+j]>='0'&&s[i+j]<='9')
    						t=t*10+s[i+j]-'0';
    					else
    						break;
    				}
    				if(t==0)
    					t=1;
    				sum+=t*16.00;
    			}
    			else if(s[i]=='N')
    			{
    				for(j=1;j<l;++j)
    				{
    				 	if(s[i+j]>='0'&&s[i+j]<='9')
    						t=t*10+s[i+j]-'0';
    					else
    						break;
    				}
    				if(t==0)
    					t=1;
    				sum+=t*14.01;
    			}
    		}
    		printf("%.3lf
    ",sum);
    	}
    	return 0;
    }
  • 相关阅读:
    ABAP POH和POV事件中 获得屏幕字段的值
    SAP 发送邮件 面向对象
    SAP文件的上传下载 SMW0,二进制文件
    SAP smartform 实现打印条形码
    SAP GB01替代 程序:RGUGBR00
    SAP问题【转载】
    物料库存确定组
    SAP ECC EHP7 RFC 发布成WebService
    NUMBER_GET_NEXT 获取编号 遇到关于按年度编号的问题
    SAP 参照sto订单创建外向交货BAPI
  • 原文地址:https://www.cnblogs.com/aerer/p/9931027.html
Copyright © 2020-2023  润新知