#P2006. Litmus Test

Litmus Test

描述

pH 值用于测量溶液中质子(H⁺)的浓度,从而判断溶液的酸碱性。溶液的 pH 值是一个介于 0 到 14 之间的数值;如果溶液是酸性的,pH 值小于 7;如果溶液是碱性的,pH 值大于 7;如果溶液是中性的,pH 值为 7。

计算 pH 值的公式为

pH=log10[H+]\text{pH} = -\log_{10} [\text{H}^+]

其中,[H+][\text{H}^+] 是溶液中质子的浓度,单位为摩尔每升。

为了计算酸的 pH 值,需要确定溶液中质子的浓度。当酸溶于水中时,会达到一种平衡,其平衡方程为

$$K_a = \frac{[\text{H}^+] [\text{酸离子}]}{[\text{酸}]} $$

其中,KaK_a 是酸的酸性常数(每种酸都有一个已知的值),[酸离子][\text{酸离子}] 是溶解的酸离子的浓度,[][\text{酸}] 是未溶解的酸的浓度。在加入酸之前,[H+][\text{H}^+][酸离子][\text{酸离子}] 均假设为 0。

例如,甲酸的酸性常数为 1.6×1041.6 \times 10^{-4}。每溶解 1 摩尔的酸分子,会产生 1 摩尔的 H⁺ 和 1 摩尔的酸离子。如果初始的甲酸浓度为 0.10.1 摩尔/升,且有 xx 摩尔的酸溶解(每升),那么在平衡时,酸的浓度为 0.1x0.1 - x 摩尔/升,H⁺ 和酸离子的浓度均为 xx 摩尔/升。

输入

输入包含多个测试用例。每个测试用例包含一行中的 4 个数字:前两个是正浮点数,分别表示酸的酸性常数 KaK_a 和加入水中的酸的初始浓度(单位为摩尔/升),后两个是正整数 mmnn,分别表示每摩尔酸分子溶解后生成的 H⁺ 离子和酸离子的摩尔数。浮点数以科学计数法的形式给出,如示例所示。输入以包含四个零的行结束。

输出

对于每个测试用例,输出溶液的 pH 值,结果保留三位小数。

输入数据 1

1.6e-04 1.0e-01 1 1  
1.6e-04 1.0e-01 4 1  
1.5e-05 5.0e-02 1 2  
0 0 0 0

输出数据 1

2.407  
2.101  
3.216

来源

Rocky Mountain 2004