Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
化学里的东东(新手参考,大神勿进)相信理科生并不陌生,高中化学里应该经常遇到。Ka是弱酸的电离平衡常数,无论你加什么酸,体积多少,平衡常数是不变的(好像是和温度有关,具体忘记了)。一摩尔酸会电离出 m 摩尔 H+ 和 n 摩尔酸离子(例如盐酸是Cl-,硫酸是SO4 2-),有c摩尔酸分子,电离了x摩尔,那么剩下c-x,根据方程: Ka=m*x(H+) * n*x(酸离子) / c-x 调整一下,有 m*n*x*x+Ka*x-Ka*c=0;那么好了,求x,求根公式就可以了。 x=(-Ka+sqrt(Ka*Ka+4*m*n*Ka*c))/(2*m*n); 最后得出x*m就是酸的摩尔数,-log10(x*m)得出pH值。 #include<iostream> #include<stdio.h> #include<math.h> #include<stdlib.h> #include<string> #include<string.h> #include<algorithm> using namespace std; int main() { double k,x,m,n,ans; while(1) { scanf("%lf%lf%lf%lf",&k,&x,&m,&n); if(m+n+k+x==0)break; ans=(-k+sqrt(k*k+4*m*n*k*x))/(2*n); printf("%.3f\n",-log10(ans)); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator