POJ 3299
//题目类型:水题(数论)
//解题思路:看清题意,直接推导公式即可
#include <iostream>
#include <stdio.h>
//#include <conio.h>
#include <math.h>
using namespace std;
double temper,humidex,dew;
void solvedew()
{
dew = 1/(1/273.16-log((humidex-temper+5.555)/(0.5555*6.11))/5417.7530)-273.16;
}
void solvetemper()
{
temper = humidex-(0.5555)*(6.11*exp(5417.7530*((1/273.16) - (1/(dew+273.16)))) - 10.0);
}
void solvehumidex()
{
humidex = temper + (0.5555)*(6.11*exp(5417.7530*((1/273.16) - (1/(dew+273.16)))) - 10.0);
}
int main()
{
//freopen("1.txt","r",stdin);
bool botemper,bohumidex,bodew;
char ch[5];
while(1)
{
botemper = false;
bohumidex = false;
bodew = false;
scanf("%s",ch); //尽量采用字符串读字符
if(ch[0]=='E') break;
else if(ch[0]=='T')
{
scanf("%lf",&temper); //G++中双精度浮点数使用scanf读取时依然采用%lf
botemper = true;
}
else if(ch[0]=='D')
{
scanf("%lf",&dew);
bodew = true;
}
else if(ch[0]=='H')
{
scanf("%lf",&humidex);
bohumidex = true;
}
scanf("%s",ch);
if(ch[0]=='T')
{
scanf("%lf",&temper);
botemper = true;
}
else if(ch[0]=='D')
{
scanf("%lf",&dew);
bodew = true;
}
else if(ch[0]=='H')
{
scanf("%lf",&humidex);
bohumidex = true;
}
if(bodew && botemper) solvehumidex();
else if(bodew && bohumidex) solvetemper();
else if(botemper && bohumidex) solvedew();
//printf("T %.1lf D %.1lf H %.1lf\n",temper,dew,humidex);
printf("T %.1f D %.1f H %.1f\n",temper,dew,humidex); //特别注意G++中不支持%lf
}
//getch();
return 0;
}