这题做的相当的复杂。。。之前做的现在应该能简单一点了写的。

我的代码:

#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)的更多相关文章

  1. UVa 1586 Molar mass --- 水题

    UVa 1586 题目大意:给出一种物质的分子式(不带括号),求分子量.本题中分子式只包含4种原子,分别为C.H.O.N, 原子量分别为12.01,1.008,16.00,14.01 解题思路:先实现 ...

  2. Molar mass UVA - 1586

    ​ An organic compound is any member of a large class of chemical compounds whose molecules contain c ...

  3. 【OI】计算分子量 Molar mass UVa 1586 题解

    题目:(由于UVa注册不了,还是用vjudge) https://vjudge.net/problem/UVA-1586 详细说明放在了注释里面.原创. 破题点在于对于一个元素的组合(元素+个数),只 ...

  4. UVa 1586 Molar mass

    题意:给出物质的分子式,计算它的相对原子质量 因为原子的个数是在2到99之间的,所以找出一个是字母之后,再判断一下它的后两位就可以找出这种原子的个数了 #include<iostream> ...

  5. UVa 1586 - Molar Mass - ACM/ICPC Seoul 2007 - C语言

    关键在于判断数字是两位数还是单位数,其他部分没有难度. #include"stdio.h" #include"string.h" #include"c ...

  6. 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)

    习题 3-3 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586) 给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分别为C,H,O,N, ...

  7. 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)

    解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同 ...

  8. 分子量(Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)

    #include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char s[20]; scanf ...

  9. 【习题 3-2 UVA - 1586】Molar mass

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟. 主要是找那个数字. [代码] #include <bits/stdc++.h> using namespace ...

随机推荐

  1. 还在自建Redis缓存?那你就out了

    Redis 是什么?简单来说,Redis是一个开源的内存数据库,支持Key-Value等多种数据结构,可用于缓存.事件发布或订阅.高速队列等场景.Redis使用ANSIC语言编写,支持网络,提供字符串 ...

  2. 树莓派玩耍笔记1 -- 开箱 &amp; 安装系统以及简单配置

    零.前言 树莓派是什么? 吃的么? 呵呵,假设您连这个还不知道,真是out 了. 麻烦出门左拐.百度去(或者,看看官网去?),算了.还是粘贴一些大家都知道的树莓派百科吧: 树莓派由注冊于英国的慈善组织 ...

  3. electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!

    Build cross platform desktop appswith JavaScript, HTML, and CSS Electron: 1.6.8Node: 7.4.0Chromium:  ...

  4. Ansi2Utf8 小工具

    将GB2312编码的文件转成Unity使用的UTF8无bom格式 主要用批处理执行 Ansi2Utf8.exe XXXXX.txt  源代码 using System; using System.Co ...

  5. SpringBoot集成Redis来实现缓存技术方案

    概述 在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. ...

  6. Mobile

    模块===包   传统开发:整个网页我们写了一个js文件,所有的特效都写在里面了. 缺点:耦合度太高,代码关联性太强,不便于后期维护,会造成全局污染. 发生的请求次数过多,依赖模糊,难于维护. 以上都 ...

  7. 对于Mobile模块化的概念认知(小白)

    最近刚刚学习了Mobile的一些基础知识,把它整理一下方便自己的学习 那什么是Mobile呢? 自己的理解是将一个项目中共同的部分抽出来,这样就形成了Mobile模块. 为什么要使用Mobile呢? ...

  8. tp 3.2 组合查询, 字符串模式查询

    $User = M("User"); // 实例化User对象 $map['id'] = array('neq',1); $map['name'] = 'ok'; $map['_s ...

  9. linux 查看 cpu

    如何获得CPU的详细信息: linux命令:cat /proc/cpuinfo 用命令判断几个物理CPU,几个核等: 逻辑CPU个数:# cat /proc/cpuinfo | grep " ...

  10. ACM_寻找第N小序列

    寻找第N小序列 Time Limit: 2000/1000ms (Java/Others) Problem Description: Now our hero finds the door to th ...