U97898 化学沙盘
题目背景
给定两种不同质量的酸、碱、金属或者盐,请求出将它们混合在一起时发生的情况。
题目描述
酸只可能是盐酸($HCl$)、硫酸($H_2SO_4$)中的一种。数据中给出的酸的质量表示酸溶液中溶质的质量。这两种酸都是稀酸。
碱只可能是氢氧化钠($NaOH$)、氢氧化钙($Ca(OH)_2$)、氢氧化钡($Ba(OH)_2$)、氢氧化钾($KOH$)、氢氧化铜($Cu(OH)_2$)、氢氧化铝($Al(OH)_3$)、氢氧化亚铁($Fe(OH)_2$)、氢氧化铁($Fe(OH)_2$)、氢氧化镁($Mg(OH)_2$)、氢氧化锌($Zn(OH)_2$)中的一种。数据中给出的碱的质量表示碱溶液中溶质的质量。这些碱都是稀碱。
金属只可能是铁($Fe$)、铜($Cu$)、银($Ag$)、镁($Mg$)、锌($Zn$)、铝($Al$)中的一种。
盐只可能是负(根)离子 $SO_4^{2-}$、$CO_3^{2-}$、$Cl^-$、$NO^{-}_{3}$ 中的一种,和正离子 $Na^+$、$Ba^{2+}$、$Zn^{2+}$、$Fe^{2+}$、$Fe^{3+}$、$Cu^{2+}$、$Ag^+$、$Al^{3+}$、$Ca^{2+}$ 中的一种匹配而成的结果。比如 $NaCl$,$CuSO_4$,$Al_2(SO_4)_3$ 等。数据中给出的盐的质量表示盐溶液中溶质的质量。
酸和碱一定会发生中和反应,产生对应的盐和水。
酸和活动性大于氢的金属($Fe$,$Mg$,$Zn$,$Al$)会发生置换反应,产生对应的盐和氢气。
酸和碳酸盐一定会发生复分解反应,产生对应的盐,水($H_2O$)和二氧化碳($CO_2$)。
酸和其它盐类可能会发生复分解反应,产生新盐和新酸,其条件是参与反应的盐可溶,且反应产生了不溶性的沉淀。
金属和盐溶液可能发生置换反应,产生新盐和新金属,其条件是金属的活动性大于盐溶液中正离子所对应金属的活动性。(金属活动性顺序表:$Mg>Al>Zn>Fe>Cu>Ag$)。
碱和盐可能会发生复分解反应,产生新碱和新盐,其条件是参与反应的盐和碱可溶,且反应产生了不溶性的沉淀。特别地,$Ca(OH)_2$ 在此处可以作为可溶性的碱。
盐和盐可能会发生复分解反应,产生两种新盐,其条件是参与反应的盐可溶,且反应产生了不溶性的沉淀。
我们假设水是足够多的,即可溶性或微溶性的物质可以无限溶,但不溶性的物质彻底不能溶。
题目中涉及的物质的溶解性:
含有 $K^+,Na^+,NO_3^-$ 根的盐均可溶。
含有 $Cl^-$ 根的盐除了 $AgCl$ 不溶外均可溶。
含有 $SO_4^{2-}$ 根的盐除了 $CaSO_4,Ag_2SO_4$ 微溶外均可溶。
含有 $CO_3^{2-}$ 根的盐除了 $K_2CO_3,Na_2CO_3$ 可溶,$MgCO_3$ 微溶外均不溶。
$Ca(OH)_2$ 微溶,$NaOH,KOH,Ba(OH)_2$ 可溶,其余的碱不溶。
特别地,不存在 $Al_2(CO_3)_3,Fe_2(CO_3)_3,AgOH$。
题目中涉及的元素的相对原子质量:
$H-1,C-12,N-14,O-16,Na-23,Mg-24,Al-27,S-32$
$Cl-35.5,K-39,Ca-40,Fe-56,Zn-65,Ag-108,Ba-133$
题目中的任何精度问题都以保留两位小数为准。
输入输出中化学式的书写以一般书写形式为准。
比如 $Na_2CO_3$ 写成 $\texttt{Na2CO3}$,$Ba(OH)_2$ 写成 $\texttt{Ba(OH)2}$。
我们假设反应在常温常压下完全充分进行。
输入格式
第一行一个字符串 $S$ 和一个实数 $D_1$,表示有质量为 $D_1$ 的 $S$ 物质。
第二行一个字符串 $T$ 和一个实数 $D_2$,表示有质量为 $D_2$ 的 $T$ 物质。
输出格式
你应当按照从上到下的顺序根据以下内容进行输出。
如果反应没有进行,则输出 $\texttt{No}$。
如果反应后反应物有过剩,则输出:
$\texttt{Remain: \%s \%f}$
其中 $\texttt{\%s}$ 表示过剩的物质名称,$\texttt{\%f}$ 表示该物质剩余的量。
如果反应生成了水,则输出:
$\texttt{H2O: \%f}$
$\texttt{\%f}$ 表示反应生成水的质量。
如果反应生成了二氧化碳,则输出:
$\texttt{CO2+: \%f}$
$\texttt{\%f}$ 表示反应生成水的质量。
反应生成的其它物质,你需要对每个物质输出一行,每行的格式为:
$\texttt{\%s: \%f}$
其中 $\texttt{%s}$ 表示该物质的名称,$\texttt{\%f}$ 表示该物质生成的量。
如果反应生成的物质是气体,那么在 $\texttt{\%s}$ 后加上符号 $\texttt{+}$。
如果反应生成的物质是沉淀,且反应物中没有不溶物,那么在 $\texttt{\%s}$ 后加上符号 $\texttt{-}$。
显然的,反应生成的物质中除去水和二氧化碳,至多有两种不同的其它物质。你应当优先输出气体,其次输出沉淀;如果两者都不是气体或沉淀,你应当优先输出化学式字典序靠前的物质。
输出中的所有数值保留两位小数。
说明/提示
对于样例 $1,2,3$:
$$
Na_2CO_3+2HCl=2NaCl+CO_2\uparrow+H_2O
$$
$1mol$ 的 $Na_2CO_3$ 和 $2mol$ 的 $HCl$ 反应将生成 $2mol$ 的 $NaCl$ 、 $1mol$ 的 $CO_2$ 和 $1mol$ 的 $H_2O$。
样例 $1$ 恰好给出了 $1mol$ 的的 $Na_2CO_3$ 和 $2mol$ 的 $HCl$,所以反应恰好完全进行。
样例 $2$ 给出了过量的 $HCl$,$HCl$ 最终有残余,但是生成物不会改变。
样例 $3$ 给出了过量的 $Na_2CO_3$,$Na_2CO_3$ 最终有残余,但是生成物不会改变。
对于样例 $4,5$:
两种物质不能发生反应。
对于其它样例,请自行理解。
对于 $10\%$ 的数据,保证两种物质分别是酸和碱。
对于另外 $30\%$ 的数据,保证其中一种物质是酸。
对于另外 $30\%$ 的数据,保证其中一种物质是碱。
对于 $100\%$ 的数据,满足物质的质量为小于 $10^5$ 的正实数。