题意:
把一些冰和一些水混合,求最终的状态和温度。
分析:
质量守恒+能量守恒。计算时将整条曲线平移至(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;
} 原文地址:http://blog.csdn.net/sepnine/article/details/44264219