POJ 2006 Litmus Test(水~)

Description
pH = -log10 [H+] ,PH值根据氢离子浓度求出 ,(这里的 [H+] 浓度是摩尔每升为单位的)
Ka = [H+] [acid ions] / [acid] ,平衡常数K等于分解的氢离子和酸根离子乘积与未分解的酸分子的比值
现给出Ka,初始酸浓度,1mol酸完全溶解电离出的氢离子mol数和酸根离子mol数,求溶解后溶液pH
Input
多组输入,每组用例占一行,前两个为浮点数表示Ka和初始酸浓度,后两个整数表示1mol酸完全溶解电离出的氢离子mol数和酸根离子mol数,以0 0 0 0结束输入
Output
对于每组用例,输出酸溶解后溶液pH
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
Solution
化学计算题,解一元二次方程,注意指数形式可以直接用%lf输入
Code

#include<stdio.h>
#include<math.h>
int main()
{
    double ka,acid,ans,ph;
    int m,n;
    scanf("%lf%lf%d%d",&ka,&acid,&m,&n);
    while(ka&&acid&&m&&n)
    {
        ans=sqrt(ka*ka+4*m*n*ka*acid);
        ans=(-ka+ans)/(2*n);
        ph=-log10(ans);
        printf("%.3lf\n",ph);
        scanf("%lf%lf%d%d",&ka,&acid,&m,&n);
    }
} 

你可能感兴趣的:(POJ 2006 Litmus Test(水~))