题意:
把一些冰和一些水混合,,求最终的状态和温度。
分析:
质量守恒+能量守恒。计算时将整条曲线平移至(0,0)开始会比较方便,但是发现当Q=0时T=-30,引入新的横坐标dT=T+30,曲线就从(Q,dT)==(0,0)开始了。
代码:
//poj 2555//sep9#include <iostream>#include <cmath>using namespace std;const double cw=4.19,ci=2.09,em=335;int main(){double mw,mi,tw,ti;while(1){scanf("%lf%lf%lf%lf",&mw,&mi,&tw,&ti);if(fabs(mw+mi)<1e-6)break;double Q;Q=mw*(ci*30+em+cw*tw)+mi*ci*(30+ti);double m=(mw+mi);if(m*ci*30>Q){double T=Q/m/ci-30;printf("%.1lf g of ice and 0.0 g of water at %.1lf C\n",m,T);}else if(m*(ci*30+em)<Q){double T=(Q-m*(ci*30+em))/m/cw;printf("0.0 g of ice and %.1lf g of water at %.1lf C\n",m,T);}else{Q-=m*ci*30;double x=Q/em;printf("%.1lf g of ice and %.1lf g of water at 0.0 C\n",m-x,x);}}return 0;}
人,也总是很难发现自己的错误,