zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Linux下通用打印系统CUPS使用教程
    psql 查询表大小
    vim自动保存折叠
    VIM设置代码折叠
    使用 ipdb 调试 Python
    在 Vim 中使用 pydiction 对 Python 进行代码补全
    wget 下载整个网站,或者特定目录
    dpkg: warning: files list file for package `*****' missing, assuming package has no files currently installed解决办法
    Windows安装Redis并添加本地自启动服务并解决客户端dll报错
    windows mysql绿色版配置Mysql5.7.X
  • 原文地址:https://www.cnblogs.com/aerer/p/9931027.html
Copyright © 2011-2022 走看看