编程介的小学生 2019-12-29 17:54 采纳率: 20.5%
浏览 432

化学方程式 用程序的编写

Problem Description
还记得高中的化学方程式吗?当时化学课是我的最爱,老师常常需要我们用化学方程式来反应一种化学变化。但是粗心的我,常常在写化学方程式的时候,在一些细节上出问题。现在我们有很多的化学方程式,但是不知道其是否正确,需要你用编程来判断。
首先我们以例子来说明下化学方程式的格式:
2H2+O2==2H2O
3Fe + 2O2==Fe3O4
CaO + H2O == Ca(OH)2
1) 左边有N种化学品,右边有M种化学品,其中N>=1且M>=1,在每种化学品中,用一个大写字母或者一个大写字母加一个小写字母表示一种化学元素,每种化学元素在表示化学变化的符号“==”前后都出现。多于N>1和M>1的情况,相邻的两种化学品之间用一个“+”来连接。
2) 在每种元素(或者每种根,后面说明)后面出现的系数,是角标,表示这个元素或者根在这个化学品中出现的比例(主要和元素的最外层和次外层电子分布有关系,在这里不考虑具体的含义,只考虑格式),同时最先在这个化学品最前面的系数,表示这个化学方程式中,这种化学品参与化学反应的比例。根据守恒定理,前后出现的化学元素的个数必须相等。一般对于数字1都不用显式写出来(数据中也同样不会出现系数1),系数同样不为0(数据中也不出现)。
3) 对于一些由多个元素组成的串,表示一个“根”,如上面例子中的OH是一个氢氧根,也叫羟基。常常一个根必须由多个元素组成(单个元素不成为根),而在表示它们在化学品中出现的比例时,为了体现它们是一个小的部分,用括号包括起来(括号不能嵌套),再在其后加上系数,所以对于Ca(OH)2中,氧元素(O)与氢元素(H)同时出现两次,但是如果根只出现一次,可以加括号也可以不加,如NaOH。
4) 在一个化学方程式中,空格的出现一般是不受限制的,但是不能将同一个化学品内的元素以及所有与它们相关的系数分开,产生符号也不能分开。
5) 对于其他的一些特殊情况,如可逆化学方程式(事实上大部分的化学变化是可逆过程)用双向箭头表示,有些产生气体的分子后面需要用向上的箭头表示,在产生过程上还有可以加一些外界物理条件,产生沉淀需要说明等,我们不予考虑。

Input
输入有多个case,每个case占一行,每行表示一个化学方程式

Output
对于每个化学方程式,判断其格式上是否正确(这里不考虑意义上的正确性问题)。如果正确输出YES,否则NO。所以输入字符都是英文状态的。每个串长不超过100个字符,每种化学品的长度不超过20个字符。

Sample Input
2H2+O2==2H2O

Sample Output
YES

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!