UVA1586 - Molar mass(紫书习题3.2)
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\n",sum);
}
return 0;
}
UVA1586 - Molar mass(紫书习题3.2)的更多相关文章
- 紫书 习题 11-9 UVa 12549 (二分图最小点覆盖)
用到了二分图的一些性质, 最大匹配数=最小点覆盖 貌似在白书上有讲 还不是很懂, 自己看着别人的博客用网络流写了一遍 反正以后学白书应该会系统学二分图的,紫书上没讲深. 目前就这样吧. #includ ...
- 紫书 习题 11-8 UVa 1663 (最大流求二分图最大基数匹配)
很奇怪, 看到网上用的都是匈牙利算法求最大基数匹配 紫书上压根没讲这个算法, 而是用最大流求的. 难道是因为第一个人用匈牙利算法然后其他所有的博客都是看这个博客的吗? 很有可能-- 回归正题. 题目中 ...
- 紫书 习题8-12 UVa 1153(贪心)
本来以为这道题是考不相交区间, 结果还专门复习了一遍前面写的, 然后发现这道题的区间是不是 固定的, 是在一个范围内"滑动的", 只要右端点不超过截止时间就ok. 然后我就先考虑有 ...
- 紫书 习题8-7 UVa 11925(构造法, 不需逆向)
这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...
- UVa1586 Molar mass
#include <stdio.h> int GetQuantity(char* q, char** p){ int quantity = 0; while (*q & ...
- 紫书 习题 11-10 UVa 12264 (二分答案+最大流)
书上写的是UVa 12011, 实际上是 12264 参考了https://blog.csdn.net/xl2015190026/article/details/51902823 这道题就是求出一种最 ...
- UVA 1593 Alignment of Code(紫书习题5-1 字符串流)
You are working in a team that writes Incredibly Customizable Programming Codewriter (ICPC) which is ...
- UVA 1594 Ducci Sequence(紫书习题5-2 简单模拟题)
A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1, a2, · · · ...
- UVA10340 - All in All(紫书习题3.9)
输入两个字符串s和t,判断是否可以从t中删除0个或者多个字符(其他字符顺序不变),得到字符串s.例如,abcde可以得到bce,但无法得到cb. Input 输入多组数据 每组一行包含两个字符串s和t ...
随机推荐
- JAVA数据库连接的另一种实现及简单的数据插入及显示
教材是JDK8的,家里也可以正规的测试JDK8, 但公司电脑是JDK6的,所以代码要相应的变动一下下,以适应老的TRY语句. Message.java package cc.openhome; imp ...
- GetBulkRequest PDU的应用
http://blog.csdn.net/wenph2008/article/details/16821617
- SPOJ 1771&&DLX精确覆盖,重复覆盖
DLX的题,做过这题才算是会吧. 这道题转化成了精确覆盖模型来做,一开始,只是单纯的要覆盖完行列和斜线,WA. 后来醒悟了,不能这样,只要覆盖全部行或列即可.虽然如此,但某些细节地方很关键不能考虑到. ...
- oracle 数据库开发面试题
近期參加了数场面试,总结一下竞聘oracle 开发岗位最常问到哪些问题: 1.delete 与 truncate 差别? 1)truncate 是DDL语句.delete 是DML语句: 2)trun ...
- Codeforces Round #244 (Div. 2)D (后缀自己主动机)
Codeforces Round #244 (Div. 2)D (后缀自己主动机) (标号为0的节点一定是null节点,不管怎样都不能拿来用,切记切记,以后不能再错了) 这题用后缀自己主动机的话,对后 ...
- luogu2014 选课 背包类树形DP
题目大意:有N门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程a是课程b的先修课即只有学完了课程a,才能学习课程b).一个学生要从这些课程里选择M门课程学习,问他能获得的最大学分是多少? ...
- JQuery常用的api[最好是系统地学习一下《锋利的JQuery》]
text http://api.jquery.com/text/ Get the combined text contents of each element in the set of matche ...
- Beta 分布归一化的证明(系数是怎么来的),期望和方差的计算
1. Γ(a+b)Γ(a)Γ(b):归一化系数 Beta(μ|a,b)=Γ(a+b)Γ(a)Γ(b)μa−1(1−μ)b−1 面对这样一个复杂的概率密度函数,我们不禁要问,Γ(a+b)Γ(a)Γ(b) ...
- Node.js:创建第一个应用
ylbtech-Node.js:创建第一个应用 1.返回顶部 1. Node.js 创建第一个应用 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 ...
- FTP协议讲解
FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用.FTP的目标是提高文件的共享性和可靠高效地传送数据. 在传输文件时,FTP 客户端程序先与服务器建立连接 ...