题意:
把一些冰和一些水混合,求最终的状态和温度。
分析:
质量守恒+能量守恒。计算时将整条曲线平移至(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