//poj 3299 数学公式 一次AC 但是写的比较多。。 #include <iostream> #include <string> #include <iomanip> #include <cmath> using namespace std; int main() { char c; cin>>c; while(c != 'E') { double a, b; char c2; cin>>a; cin>>c2; cin>>b; double temp, dewpoint, humidex; if(c == 'D') { dewpoint = a; double e1 = 6.11 * pow(2.718281828, 5417.7530 * (( 1.0 / 273.16) - ( 1.0 / (dewpoint + 273.16)))); double h = (0.5555) * ( e1 - 10.0 ); if(c2 == 'T') { temp = b; humidex = temp + h; } else if (c2 == 'H') { humidex = b; temp = humidex - h; } } else if(c == 'T') { temp = a; if(c2 == 'D') { dewpoint = b; double e = 6.11 * pow(2.718281828, 5417.7530 * (( 1.0 / 273.16) - ( 1.0 / (dewpoint + 273.16)))); double h = (0.5555) * ( e - 10.0 ); humidex = temp + h; } else if (c2 == 'H') { humidex = b; double h = humidex - temp; double e = h / 0.5555 + 10.0; dewpoint = log(e / 6.11); dewpoint = ( 1.0 / 273.16 ) - dewpoint / 5417.7530; dewpoint = (1.0 / dewpoint - 273.16); } } else if(c == 'H') { humidex = a; if(c2 == 'D') { dewpoint = b; double e = 6.11 * pow(2.718281828, 5417.7530 * (( 1.0 / 273.16) - ( 1.0 / (dewpoint + 273.16)))); double h = (0.5555) * ( e - 10.0 ); temp = humidex - h; } else if (c2 == 'T') { temp = b; double h = humidex - temp; double e = h / 0.5555 + 10.0; dewpoint = log(e / 6.11); dewpoint = ( 1.0 / 273.16 ) - dewpoint / 5417.7530; dewpoint = (1.0 / dewpoint - 273.16); } } cout<<"T "<<fixed<<setprecision(1)<<temp<<" D "<<fixed<<setprecision(1)<<dewpoint<<" H "<<fixed<<setprecision(1)<<humidex<<endl; cin>>c; } return 0; }