i+=1num =int(num)ifnumelse1# 若没有则默认1returnnum, ideffindLetter(i):# 提取一个元素符号,Ag,O,并返回提取完的位置下标ifel[i].isupper(): let = el[i]else:return'', i i +=1whilei <len(el)andel[i].islower(): let += el[i] i+=1returnlet, idefjudge(i):# 获取当前i下标...
给出一组化学方程式,请你编写程序判断每个方程式是否配平(也就是方程式中等号左右两边的元素种类和对应的原子个数是否相同)。 本题给出的化学方程式由大小写字母、数字和符号(包括等号=、加号+、左圆括号和右圆括号)组成,不会出现其他字符(包括空白字符,如空格、制表符等),化学方程式的格式与化学课本中的形式基本...
CCF认证 201912-3 化学方程式 (100分) 题目大意也很容易懂,相比于往年的第三题,跟着模拟就好了。把()word,分解操作。 差几行代码300的我哭鸟= = // INFO BEGIN // // User = 201911506529(俞梦真) // Group = C/C++ // Problem = 化学方程式 // Language = CPP11 // SubmitTime = 2019-12-15 ...
}//分别处理化学方程式等号两边voidcalculate(string &str,map<string,int> &mp){stringstreamss(str); string item;//以加号为标志分割方程式,处理每一个化学式while(getline(ss,item,'+')) {intfactor =1;//化学式初始系数,默认为1inti =0; vector<Elem> elem;//如果化学式前面的系数不为0,则进行计算,...
201912-3 化学方程式 【分析】 这题挺恶心的。。。借助map和string可以方便些。 由括号嵌套应该想到递归(或理解为树)的思想,每多一层,就要递归一层,括号内的内容可以当作全新的一个分子。 用map记录每种原子的数量,最终比较map所存的原子数量是否相等。
首先,用两个Map分别收集等号左右两边的元素,对比两个map的内容即可。那么问题就转化成了如何收集每一个化学式的信息。代码细节见注释 importjava.util.HashMap;importjava.util.Map;importjava.util.Scanner;publicclass化学方程式{publicstaticvoidmain(String[]args){Scanner scanner=newScanner(System.in);int n=scan...
化学方程式:NaHCO3+HCl=NaCl+H2O+CO2↑ CaCO3+2HCl=CaCl2+H2O+CO2↑ Al(OH)3+3HCl=AlCl3+3H2O Mg(OH)2+2HCl=MgCl2+2H2O MgCO3+2HCl=MgCl2+H2O+CO2↑ 离子方程式:HCO3¯+H+=H2O+CO2↑CaCO3+2H+=Ca2++H2O+CO2↑Al(OH)3+3H+=Al3++3H2OMg(OH)2+2H+=Mg2++2H2OMgCO3+2H+=Mg2++H2O+CO2↑...
1. 遇到大写字母并且 tmp 不为空就要吧 tmp和 tindex * xs 存进 map 中 2. 遇到数字,把数字记录下来,存进 tindex 中 3. 遇到括号,先把 tmp和 tindex进 map 中,再把号里的东西都存进tmp中并且记录index 递归一次 4. 其他情况把遇到的字符先存进 tmp 中 ...
化合价为零价,O3为单质元素化合价为零;;(2)NH2Cl含有三种元素,其中氯元素与氢元素的质量比为:35.5:(1×2)=71:4;(3)根据所给化学方程式可以看出:化学方程式的右边比左边多出了2个氢原子和1个氧原子;根据质量守恒定律中的元素种类不变和原子个数不变的特点,可知多出的原子全部来自1个X分子中,即X的化学式...
检查化学方程式是否配平,没啥思维难度,硬着头皮模拟就行了,用栈记录当前的层数 第一种解法是纯模拟,用一个map记录元素种类和每种元素的个数,比较麻烦但容易debug(复杂度:??有点玄学): 1#include<bits/stdc++.h>2usingnamespacestd;3typedeflonglongll;4constintN=1e3+10;5typedef vector<string>Vec;6typedef...