uva 1586 Molar mass(Uva-1586)
这题做的相当的复杂。。。之前做的现在应该能简单一点了写的。
我的代码:
#include <bits/stdc++.h>
using namespace std;
main()
{
int a;
cin>>a;
while(a--)
{
string b="";
cin>>b;
stringstream stream;
int sumc,sumh,sumo,sumn;
sumc=sumh=sumo=sumn=;
int c,h,o,n,f;
c=h=o=n=;f=;
string str="";
for(int i=;i<b.size()+;i++)
{
if(isalpha(b[i])&&isalpha(b[i+])||isalpha(b[i])&&!b[i+])
{
if(b[i]=='C')
sumc+=;
if(b[i]=='H')
sumh+=;
if(b[i]=='O')
sumo+=;
if(b[i]=='N')
sumn+=;
}
else if(isdigit(b[i])&&f)
{
if(b[i-]=='C')
{
str+=b[i];c=;f=;
}
if(b[i-]=='H')
{
str+=b[i];h=;f=;
}
if(b[i-]=='O')
{
str+=b[i];o=;f=;
}
if(b[i-]=='N')
{
str+=b[i];n=;f=;
}
}
else if(c&&!f)
{
if(isalpha(b[i])||!b[i])
{
int num=;
f=;c=;
stream<<str;
stream>>num;
sumc+=num;
stream.clear();
str="";
}
else
str+=b[i];
}
else if(h&&!f)
{
if(isalpha(b[i])||!b[i])
{
int num=;
f=;h=;
stream<<str;
stream>>num;
sumh+=num;
stream.clear();
str="";
}
else
str+=b[i];
}
else if(o&&!f)
{
if(isalpha(b[i])||!b[i])
{
int num=;
f=;o=;
stream<<str;
stream>>num;
sumo+=num;
stream.clear();
str="";
}
else
str+=b[i];
}
else if(n&&!f)
{
if(isalpha(b[i])||!b[i])
{
int num=;
f=;n=;
stream<<str;
stream>>num;
sumn+=num;
stream.clear();
str="";
}
else
str+=b[i];
}
}
double sum=;
sum=sumc*12.01+sumh*1.008+sumo*16.00+sumn*14.01;
printf("%.3lf\n",sum);
}
}
uva 1586 Molar mass(Uva-1586)的更多相关文章
- UVa 1586 Molar mass --- 水题
UVa 1586 题目大意:给出一种物质的分子式(不带括号),求分子量.本题中分子式只包含4种原子,分别为C.H.O.N, 原子量分别为12.01,1.008,16.00,14.01 解题思路:先实现 ...
- Molar mass UVA - 1586
An organic compound is any member of a large class of chemical compounds whose molecules contain c ...
- 【OI】计算分子量 Molar mass UVa 1586 题解
题目:(由于UVa注册不了,还是用vjudge) https://vjudge.net/problem/UVA-1586 详细说明放在了注释里面.原创. 破题点在于对于一个元素的组合(元素+个数),只 ...
- UVa 1586 Molar mass
题意:给出物质的分子式,计算它的相对原子质量 因为原子的个数是在2到99之间的,所以找出一个是字母之后,再判断一下它的后两位就可以找出这种原子的个数了 #include<iostream> ...
- UVa 1586 - Molar Mass - ACM/ICPC Seoul 2007 - C语言
关键在于判断数字是两位数还是单位数,其他部分没有难度. #include"stdio.h" #include"string.h" #include"c ...
- 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)
习题 3-3 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586) 给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分别为C,H,O,N, ...
- 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同 ...
- 分子量(Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char s[20]; scanf ...
- 【习题 3-2 UVA - 1586】Molar mass
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟. 主要是找那个数字. [代码] #include <bits/stdc++.h> using namespace ...
随机推荐
- Chrome控制台命令
window.print();打印当前窗口内容或输出为pdf
- POJ 1663:Number Steps
Number Steps Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13758 Accepted: 7430 Des ...
- RAID5配置及服务器2003系统安装方法。2000系统的安装要使用7.9版本的引导盘
服务器2003系统安装方法.2000系统的安装要使用7.9版本的引导盘 RAID5配置: 1.为新到的惠普DL380服务器装系统,首先要配置RAID阵列. 如下图进行配置. 启动到如上图阶段,按F8. ...
- LCA__st算法&&树上倍增
st表 #include<cstdio> #include<algorithm> #include<cmath> using namespace std; ]; ] ...
- THE DRUNK JAILER
http://poj.org/problem?id=1218 题意:门的状态有两种开或关,初始化为开,每次进行状态转换,第一次把门号是1的倍数的门状态转换,第二次把门号是2的倍数的门状态转换,.... ...
- ACM_圆的面积
圆的面积 Time Limit: 2000/1000ms (Java/Others) Problem Description: AB是圆O的一条直径,CD.EF是两条垂直于AB的弦,并且以CD为直径的 ...
- Coursera公开课-Machine_learing:编程作业2
第三周编程作业:Logistic Regression 代码包在gitlab上:https://gitlab.com/luntai/Machine_Learning
- JQuery 记第N次被坑 - ajax请求字符集问题
前言:两个功能差不多的页面,都是使用$.post()请求后台,页面A传递到后台的中文参数正常,页面B传递到后台的中文参数则为乱码 分析过程: ①使用chrome的开发者工具,分析两个页面的ajax请求 ...
- JS——思维拓展
1.阶乘求和:4的阶乘是1*2*3*4 <script> function jiechen(value) { var n = 1; for (var i = 1; i <= valu ...
- 用最简单的脚本完成supertab的基本功能并实现一个更加合理的功能
supertab是vim的一个出名的插件, 相信会vim的人没几个不知道的, 我在之前的<<vim之补全1>>中首先说明的也是它, supertab实现的功能简单的说就是用ta ...