POJ 2006 Litmus Test G++

已知公式 pH = -log10 [H+] ,Ka = [H+] [acid ions] / [acid]。[H +]为H+的摩尔浓度(mol/L)。Ka是酸度常数,[acid ions]是已溶解的酸的摩尔浓度,[acid]是未溶解的酸的摩尔浓度。已知Ka,酸的原始摩尔浓度,m和n表示每摩尔酸分子溶解成m摩尔的H +离子和n摩尔的酸离子。求PH值。



//#include <iostream>
#include <cmath>
//#include <iomanip>
#include <cstdio>
using namespace std; 
int main()
{	
	while(1)
	{
		double ka, Oa;
		int m, n;
		scanf("%lf%lf%d%d",&ka,&Oa,&m,&n);;
		if((ka==0)&&(Oa==0)&&(m==0)&&(n==0))
		{
			break;
		}
		//Ka=m*x*n*x/(Oa-x);
		//-log10(x)  不需要用round函数   谢谢博友 
		//cout<<fixed<<setprecision(3)<<-log10(m*(sqrt((ka*ka)/(m*m*n*n)+(4*ka*Oa)/(m*n))-ka/(m*n))/2)<<endl;
		//cout<<fixed<<setprecision(3)<<-log10(((sqrt(ka*ka+4*m*n*ka*Oa)-ka)/(2*n)))<<endl;
		double ph=-log10(((sqrt(ka*ka+4*m*n*ka*Oa)-ka)/(2*n)));
		printf("%.3f\n",ph);//格式不对 n 次才过	 谢谢博友 
	}
	return 0;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值