题目链接:
#include <iostream>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
const double d1 = 0.5555;
const double d2 = 6.11;
const double d3 = 5417.7530;
const double d4 = 273.16;
int main()
{
double T, D, H, n1, n2, e, h;
char c1, c2;
while (cin >> c1 && c1 != 'E')
{
cin >> n1 >> c2 >> n2;
if (c1 == 'T' && c2 == 'D' || c1 == 'D' && c2 == 'T')
{
T = n1, D = n2;
if (c1 == 'D') swap(T, D);
e = d2 * exp(d3 * (1 / d4 - (1 / (D + d4) ) ));
h = d1 * (e - 10.0);
H = T + h;
}
else if (c1 == 'T' && c2 == 'H' || c1 == 'H' && c2 == 'T')
{
T = n1, H = n2;
if (c1 == 'H') swap(T, H);
e = (H - T) / d1 + 10;
double tp = 1 / d4 - log(e / d2) / d3;
D = 1 / tp - d4;
}
else
{
D = n1, H = n2;
if (c1 == 'H') swap(D, H);
e = d2 * exp(d3 * (1 / d4 - (1 / (D + d4) ) ));
h = d1 * (e - 10.0);
T = H - h;
}
cout << "T " << fixed << setprecision(1) << T << " D " << fixed << setprecision(1) << D
<< " H " << fixed << setprecision(1) << H << endl;
}
return 0;
}
/*说明:
不算难题,但是公式换算时,容易看错,所以一开始WA了几次,但是没什么技巧和知识点上的难点
BTW,最近开始做一些“poj分类 很有层次感”,因为突然感觉一直刷书上的题,有些倦怠了,那就搭配一下
*/