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;
    }
  • 相关阅读:
    KM匹配模板
    BestCoder 1st Anniversary 1002-1005
    SGU 106 The equation
    sgu 104 Little shop of flowers
    SGU Magic Pairs
    关于 “'sqlite3' 不是内部或外部命令.....”问题
    通过django 速成 blog
    windows 通过appache链接cgi程序
    A Lot of Games(Trie树 + 博弈)
    树的点分治 (poj 1741, 1655(树形dp))
  • 原文地址:https://www.cnblogs.com/aerer/p/9931027.html
Copyright © 2011-2022 走看看