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 ...
随机推荐
- HDU 3002
无向图最小割. #include <iostream> #include <cstdio> #include <cstring> using namespace s ...
- Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected
首先说一下5.3貌似没有这个问题, 可是眼下最新版的luasocket 3.0 rc1仅仅能支持5.2, 5.3调用的话程序会崩溃(不知道是不是我没配置好) 出现这个问题的解决办法, 想必网上有非常多 ...
- 【机房收费系统C#版】——导出Excel
前言 机房合作開始好长了一段时间.反重复复开了几次会,项目也是一拖再拖,作为组长.有80%的责任都在于我.为了不让这个项目陪着我过春节.要求自己一定要在这几天敲完. 还是一样的问题,用C#敲,从一開始 ...
- Visual Studio 2013 与 14
Visual Studio 2013 与 14 假设有曾经版本号的 Visual Studio.再想安装 Visual Studio 14 CTP,默认情况下是不行的. 假设一定要装,当然也是能够的. ...
- 安卓欢迎界面和activity之间的跳转问题
使用安卓的UI界面,就不得不了解activity,由于actvity就像是一个form表单一样,全部的UI都呈如今这里,他能够承载全部的UI控件. INtent就是一个中继站一样.他负责组件之间的沟通 ...
- linux虚拟机网络设置(本机使用公司内网)
使用桥接方式 设置: 一开始没有的话可以add 编辑edit 参考公司网络,下图是公司内网地址 然后设置 然后ping就ok了
- MEAN框架介绍
近期在Angular社区的原型开发人员间.一种全Javascript的开发架构MEAN正突然流行起来.其首字母分别代表的是:(M)ongoDB--NoSQL的文档数据库,使用JSON风格来存储数据,甚 ...
- 略过天涯 深入浅出VGA和DVI接口【转】
本文转载自:http://www.cnblogs.com/lueguo/p/3373649.html 由CrazyBingo修改…… 前言:目前显示器的主流接口是VGA.DVI以及HDMI,再加上一个 ...
- Hdu-6230 2017CCPC-哈尔滨站 A.Palindrome Manacher 主席树
题面 题意:给你一个字符串,问你满足s[i]=s[2n-i]=s[2n+i-2]的子串(这子串长度为3n-2)有多少个,原字符串长度<=5e5 题解:对于这种子串,其实要满足2个回文,跑过一次M ...
- 访问修饰符相关注意点(protected子类友好)
注意:protected表示只有在子类和同包中可以访问. 需要注意的是,在其他包中,若是创建了父类的对象,但是父类对象访问不了自己类里面用protected修饰的属性,只能由子类访问父类的protec ...