2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛) B-分子

题目描述:
在遥远的斯卡布罗集市,有机分子只能由 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,括号和数字以外的字符,且长度不超过 10^15。

输出描述:

在一行中输出一个整数,代表该分子的式量。
保证答案不超过 10^ 15 。

链接:https://ac.nowcoder.com/acm/contest/6871/B
来源:牛客网

示例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。

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

**
在比赛的时候一直没过,捋不清楚它们的关系,看了别人的代码,终于捋清楚了
可以把整个分子式分块,把后面有数字的和括号括住的拎出来处理
仔细思考可以发现括号中的分子式和外面的处理方式相同
可以利用递归函数一直调用fun()函数对括号中的分子式进行处理

**

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll lena,i;
char a[100006];
ll max(ll a,ll b)
{return a > b ?  a:b;
}
ll fun()
{ll ans=0,t = 0;for(i; i < lena;i ++)//注意这里从i开始,让i自由变化,不能让i=0{ll sum = 0;while(a[i] >= '0'&&a[i] <= '9')//如果是数字的话,把整个数都算出来//(可能是二位数,三位数,多位数){sum=sum*10+a[i]-'0';i++;}ans+= t * max(sum,1);//后面没有数字的话就*1,有数字的话就乘以数字t = 0;//每轮对t初始化if(a[i] == 'C') t = 13;else if(a[i] == 'O') t=17;else if(a[i] == 'H') t=1;if (a[i] == '('){i++; //从下一个字符开始t=fun();//调用fun函数对括号中的分子式进行计算}else if(a[i] == ')') break;}ans+=t; //最后一个如果是字母或者括号括住的分子式,需要再加上去return ans;
}
int main()
{gets(a);lena=strlen(a);printf("%lld\n",fun());return 0;
}

2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛) B-分子相关推荐

  1. 2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛)整理合集

    文章目录 分子 爵士 内存 同源 游戏 选择 露营 D.旅行 H.病毒 海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛 分子 题目大意 在遥远的斯卡布罗集市,有机分子只能由 C,H,OC, H ...

  2. “新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛----G-CSL的训练计划

    首先发出题目链接: 链接:https://ac.nowcoder.com/acm/contest/551/F 来源:牛客网 涉及:有向图 题目如下: 题目意思(表示我太chun,读了几遍才勉强明白了题 ...

  3. “新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛 B.CSL 的英语考试

    CSL 的英语考试 CSL 为了备战即将到来的六级考试,在外面报了一个英语培训班.经过了一学期的学习后,英语老师决定要对 CSL 的学习成果进行检测.老师准备了一份卷子,考虑到 CSL 的英语水平,卷 ...

  4. 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)

    文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...

  5. 科大讯飞杯”第18届上海大学程序设计联赛(H dfs暴力) L、动物森友会 (网络流题 延伸题 E、Sunscreen)

    网络流,最大流,满流,最小割都是一个意思. H-纸牌游戏 这题看着牛客评论的题解惊呆了,都是些什么做法?看都不看不懂(太高级了)然后从AC代码中扒来了一份代码,就是dfs一下 从9到0开始选 假设当前 ...

  6. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列 链接:https://www.nowcoder.com/acm/contest/91/L 来源:牛客网 题目描述 给一个数组 ...

  7. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance 链接:https://www.nowcoder.com/acm/contest/91/A ...

  8. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果

    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果 链接:https://www.nowcoder.com/acm/contest/91/E 来源:牛客网 题目描述 小Y买 ...

  9. 【超好懂的比赛题解】第十八届同济大学程序设计竞赛暨高校网络友谊赛

    title : 第十八届同济大学程序设计竞赛暨高校网络友谊赛 date : 2022-5-30 tags : ACM,题解,练习记录 author : Linno 第十八届同济大学程序设计竞赛暨高校网 ...

最新文章

  1. Kubernetes 架构(下)【转】
  2. 每日一皮:项目开发停在了最后10%的效果...
  3. wtl for duilib 运行良好
  4. python如何连redis_python操作redis
  5. VMware虚拟机安装
  6. EL表达式JSON应用
  7. 从/etc/inetd.conf学习服务(4)
  8. [vb]利用WScript.Shell对象隐藏cmd命令行运行
  9. mysql基础2-数据库的相关操作
  10. android 编译c代码吗,在Android手机上编译C代码
  11. 漫画:什么是优先队列?
  12. RJ45口线序的理解
  13. 二叉树模型期权定价c语言程序,二叉树期权定价模型
  14. 贪心算法-2.找钱问题
  15. Linux安全端口关闭,Linux系统防火墙关闭及端口开放
  16. 最近在做文本匹配,想到了特征值的算法,自己写了一个文本计算算法。求批判。...
  17. lamp-linux2
  18. VS_Code快捷自定义代码块,助你一臂之力
  19. php168,phpcms,dedecms 使用感受
  20. 计算机病毒是一种特殊的计算机程序段,计算机病毒是一种特殊的计算机程序。(  )——青夏教育精英家教网——...

热门文章

  1. 记录ubuntu20.04以及配置安装过程(双系统)
  2. Android ViewPager用法
  3. 语音合成(speech synthesis)方向五:多语言模型multi-lingual and code switch speech synthesis
  4. Spring初始化加载流程分析
  5. Mac版 Android Studio自带模拟器无法联网解决方案
  6. 网络状态是一条横线 连接不上网络的解决办法
  7. 2022年陕西省职业院校技能大赛“网络搭建与应用”赛项竞赛试题
  8. bzoj1492 [NOI2007]货币兑换Cash (斜率DP+cdq分治)
  9. 怎么用unity2019及以上版本打开工程和修改分辨率
  10. MyBatis list Contains MyBatis 动态SQL 判断List Contains