分子(情况有限时用模拟,比赛不是不可能出模拟)

编程入门 行业动态 更新时间:2024-10-09 02:31:36

分子(情况有限时用模拟,比赛不是<a href=https://www.elefans.com/category/jswz/34/1769587.html style=不可能出模拟)"/>

分子(情况有限时用模拟,比赛不是不可能出模拟)

链接:
来源:牛客网

分子
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld
题目描述
在遥远的斯卡布罗集市,有机分子只能由 C, H, O 三种元素组成。根据珂学家们的探测,一个 C 原子的式量为 13 ,一个 H 原子的式量为 1 ,一个 O 原子的式量为 17 。一个有机分子的式量恰为各个原子的式量的总和。

对于有机分子式给出如下定义:

 有机分子式只可能包含数字、括号和 C, H, O 三种元素标记;数字只能出现在元素标记或右括号的右边,代表该元素(或括号内的分子式)重复出现的次数;数字只可以是不包含前导零的正整数;如果一个元素右侧没有数字,那么表示该元素只出现一次;括号内包含非空的有机分子式,但该有机分子式不再嵌套括号。 

例如 (HH)3H(H)、CO2、CH12、CHHOO 都是合法的有机分子式。

而 4HC、CHTHOLLOY、CH3(CH2)3(CH(CHCH3)2CH3)2(CH2)3CH3 都不是合法的有机分子式。

对于符合上述要求的分子式,你能帮助珂学家们计算它的分子式量吗?
输入描述:

输入仅一行,包含一个字符串,代表分子式。

保证符合上述定义,字符串中不含除 C, H ,O,括号和数字以外的字符,且长度不超过 10510^5105 。

输出描述:

在一行中输出一个整数,代表该分子的式量。

保证答案不超过 101510^{15}1015 。

示例1
输入
复制

CH3COOH

输出
复制

64

示例2
输入
复制

CH3(CH2)10CH3

输出
复制

182

示例3
输入
复制

H(HH)C(CH2)3O(H)1

输出
复制

79

备注:

斯卡布罗集市是一个魔法集市,所以对化学的定义可能和麻瓜世界略有不同。

在第二个样例中,一共出现了 12 个C和 26 个H;

在第三个样例中出现了 4 个 C、10 个 H 和 1 个 O。

对于部分编程语言,请注意使用合适的数据类型以避免答案溢出。

#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
using namespace std;
string s;
long long ans,cnt,mid,res;
int main()
{cin >> s;int m = s.length();//CH3COOH;for (int i = 0; i < m;){if (s[i] == 'O' || s[i] == 'H' || s[i] == 'C'&&i < m){if (s[i] == 'O')cnt = 17;if (s[i] == 'H')cnt = 1;if (s[i] == 'C')cnt = 13;i++;mid = 0;while (i < m&&s[i] >= '0'&&s[i] <= '9'){mid = mid * 10 + s[i] - '0';i++;}if (!mid)ans += cnt;else ans += mid * cnt;}else if (s[i] == '('&&i < m){res += ans;ans = 0;i++;}else if (s[i] == ')'&&i < m){mid = 0;i++;while (i < m&&s[i] >= '0'&&s[i] <= '9'){mid = mid * 10 + s[i] - '0';i++;}if (!mid) { res+=ans; }else res += mid * ans;ans = 0;}}res += ans;cout << res << endl;
}

更多推荐

分子(情况有限时用模拟,比赛不是不可能出模拟)

本文发布于:2024-02-27 19:50:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766113.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不可能   时用   分子   情况

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!