The pH scale measures the concentration of protons (H +) in a solution and, therefore, its acidity or alkalinity. The pH value of a solution is a number between 0 and 14; it is less than 7 if the solution is acidic, greater than 7 if the solution is basic, and 7 if it is neutral.

The formula for calculating pH is

pH = -log
10 [H
+]

where [H
+] is the concentration of protons measured in moles per litre.

To calculate the pH value of an acid, one has to determine
the concentration of protons in the solution. When an acid is dissolved
in water, an equilibrium is reached and is governed by the equation

K
a = [H
+] [acid ions] / [acid]

where K
a is the acidity constant (known for each acid), [acid
ions] is the concentration of the acid ions that have dissolved, and
[acid] is the concentration of the undissolved acid. Before the acid is
added, both [H
+] and [acid ions] are assumed to be 0.

For example, the acidity constant of methanoic acid is 1.6 * 10
-4. Dissolving one mole of acid molecules results in one mole of H
+ and one mole of acid ions. If the initial
concentration of the methanoic acid is 0.1 moles/L and x moles of acid
are dissolved (per liter), then the final concentration at equilibrium
would be 0.1 - x moles/L for the acid and x moles/L for H
+ and the acid ions.

Input

The input consists of a number of test cases. Each test case
contains 4 numbers on a line: two positive floating-point numbers
specifying the acidity constant K
a and the original concentration of the acid (in
moles/liter) added to the water, as well as two positive integers m and n
indicating that each mole of acid molecules is dissolved into m moles
of H
+ ions and n moles of acid ions. The floating-point
numbers are specified in scientific notation as shown below. The input
is terminated with a line containing four zeros.

Output

For each test case, print on a line the pH value of the solution, rounded to 3 decimal places.

Sample Input

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

Sample Output

2.407
2.101
3.216 OJ-ID:
POJ-2006 author:
Caution_X date of submission:
20190929 tags:
卡常的水题 description modelling:
给定电离平衡常数Ka,溶液未电离时的浓度C,1mol 酸的氢含量n和酸根含量m major steps to solve it:
    常规化学题的推导:设[H+]=x,[酸根]=y,则Ka=x*y/(C-y),x/y=n/m.
    记Ka=a,C=b,解得:ans=(-log10((-a+sqrt(a*a+(4.0*a*b*n*m)))/(2.0*m))). warnings:
sqrt(n/m)会导致精度不足,用sqrt(n*m)/m来替代则AC AC CODE:
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstdio>
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
double a,b;
int n,m;
while(~scanf("%lf%lf%d%d",&a,&b,&n,&m)&&a&&b&&n&&m)
{
cout<<setprecision()<<fixed<<(-log10((-a+sqrt(a*a+(4.0*a*b*n*m)))/(2.0*m)))<<endl;
}
return ;
}

POJ-2006 Litmus Test 高精度的更多相关文章

  1. POJ 2006:Litmus Test 化学公式

    Litmus Test Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1709   Accepted: 897 Descri ...

  2. poj 1503 Integer Inquiry (高精度运算)

    题目链接:http://poj.org/problem?id=1503 思路分析: 基本的高精度问题,使用字符数组存储然后处理即可. 代码如下: #include <iostream> # ...

  3. POJ 2084 Catalan数+高精度

    POJ 2084 /**************************************** * author : Grant Yuan * time : 2014/10/19 15:42 * ...

  4. 解方程求PH值,POJ(2006)

    题目链接:http://poj.org/problem?id=2006 解题报告: 题意看了半天,没看懂,再加上化学没学好,更加让我头痛. 假设1L溶解了x摩尔的酸:ka=m*x*nx/ori-x; ...

  5. POJ 1001 解题报告 高精度大整数乘法模版

    题目是POJ1001 Exponentiation  虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...

  6. 【POJ 1001】Exponentiation (高精度乘法+快速幂)

    BUPT2017 wintertraining(15) #6A 题意 求\(R^n\) ( 0.0 < R < 99.999 )(0 < n <= 25) 题解 将R用字符串读 ...

  7. POJ 1625 Censored!(AC自动机+DP+高精度)

    Censored! Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 6956   Accepted: 1887 Descrip ...

  8. POJ 3181 Dollar Dayz(高精度 动态规划)

    题目链接:http://poj.org/problem?id=3181 题目大意:用1,2...K元的硬币,凑成N元的方案数. Sample Input 5 3 Sample Output 5 分析: ...

  9. poj 2773 Happy 2006 - 二分答案 - 容斥原理

    Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 11161   Accepted: 3893 Description Two ...

随机推荐

  1. C# rename files

    static void RenameFiles() { string sourceDir = @"D:\ll"; string[] allFiles = Directory.Get ...

  2. wpf listview images

    <ListView x:Name="lv"> <ListView.ItemsPanel> <ItemsPanelTemplate> <St ...

  3. 初识Lock与AbstractQueuedSynchronizer(AQS)

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  4. 并发编程-epoll模型的探索与实践

    前言 我们知道nginx的效率非常高,能处理上万级的并发,其之所以高效离不开epoll的支持, epoll是什么呢?,epoll是IO模型中的一种,属于多路复用IO模型; 到这里你应该想到了,sele ...

  5. vueInitVux中引入bootstrap、jquery步骤

    1.先从github上下载 vueInitVux 2.将 build下webpack.base.conf.js 文件 替换成 Html5IQ下的文件 3.npm i 4.npm i jquery -- ...

  6. Srping MVC ant路径匹配

    背景 最近有一个功能设计path匹配,开发说支持ant匹配,这是我第一次听说这个词,赶紧补一下功课. Ant匹配规则 1.前言 (1)SpringMVC的路径匹配规则是按照Ant来的,实际上不只是Sp ...

  7. Xcode 7.3 解决自定义类无法自动联想

    正在苦拼的码友们,最近是不是觉得在写代码的时候很是头疼,甚至连个最基本的系统自带的语法啊.单词啊等等都不能联想了,之前习惯了的码友们,这个时候肯定会觉得是不是自己写错了,然后也往下翻了一大篇,还是找不 ...

  8. IOS中的深拷贝和浅拷贝

    标签: 什么是深拷贝?什么是浅拷贝? 为什么经常看到字符串属性要这样定义,那个copy是神马意思? @property(nonatomic,copy)NSString* name; 为什么下面的写法是 ...

  9. linux远程桌面连接 VNC Server

    更新源 # sudo apt-get update 安装vnc4server # sudo apt-get install vnc4server 修改vnc远程连接密码 # vncpasswd 编辑v ...

  10. [20191012]组成rowid.txt

    [20191012]组成rowid.txt --//昨天做了拆分rowid的测试,链接http://blog.itpub.net/267265/viewspace-2659613/=>[2019 ...