//纯粹公式递推,注意题目要求,任意知2求1 //别递推错就OK了 #include<iostream> #include<cmath> #include<iomanip> using namespace std; const double Exp = 2.718281828; char a,b; double aa,bb; double var[100]; double T,H,D; double e,h; void print() { cout << "T "; cout << fixed << setprecision(1) << T; cout << " D "; cout << fixed << setprecision(1) << D; cout << " H "; cout << fixed << setprecision(1) << H << endl; } int main() { while(cin >> a) { if(a == 'E') break; cin >> aa >> b >> bb; memset(var,0,sizeof(var)); var[a] = aa; var[b] = bb; T = H = D = 0;//注意初始化 if(var['T'] != 0) T = var['T']; if(var['D'] != 0) D = var['D']; if(var['H'] != 0) H = var['H'];//通过这种形式赋值可以简化判断结构 if(T != 0 && D != 0) { e = 6.11 * pow(Exp,5417.7530 * ((1/273.16) - (1/(D+273.16)))); h = (0.5555) * (e - 10.0); H = T + h; print(); } else if(T != 0 && H != 0) { h = H - T; e = h / 0.5555 + 10.0; D = 1/(log(e/6.11)/((-1)*5417.7530) + 1/273.16) - 273.16; print(); } else if(H != 0 && D != 0) { e = 6.11 * pow(Exp,5417.7530 * ((1/273.16) - (1/(D+273.16)))); h = (0.5555) * (e - 10.0); T = H - h; print(); } } return 0; }