POJ_3299 Humidex(簡單題)

題意:

很長,但是重點就是幾個公式。

思路:

題目給出了公式,知道兩個未知量求第三個。

C要注意輸入時適當的getchar()。

另外在輸出的時候用G++的編譯器總是過不了double類型變量lf佔位符輸出。解決方法是要麼改成f佔位,要麼改成C++編譯器輸出。

代碼實現:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>

using namespace std;

char flag;
double num;
bool fT,fD,fH;
double T,D,H;
double E,humidex;
int main()
{
    while( scanf("%c",&flag) ){
        if( flag == 'E' ){
            break;
        }
        fT = fD = fH = false;
        scanf("%lf",&num);
        if( flag == 'T' ){
            T = num;
            fT = true;
        }
        else if( flag == 'D' ){
            D = num;
            fD = true;
        }
        else if( flag == 'H' ){
            humidex = num;
            fH = true;
        }
        getchar();
        scanf("%c",&flag);
        getchar();
        scanf("%lf",&num);
        if( flag == 'T' ){
            T = num;
            fT = true;
        }
        else if( flag == 'D' ){
            D = num;
            fD = true;
        }
        else if( flag == 'H' ){
            humidex = num;
            fH = true;
        }
        if( fT && fD ){
            E = 6.11*exp((5417.7530)*((1/273.16)-(1/(D+273.16))));
            H = (0.5555)*(E-10.0);
            humidex = T+H;
        }
        else if( fT && fH ){
            H = humidex-T;
            E = H/(0.5555)+10.0;
            D = 1/(-(log(E/6.11)/5417.7530)+(1/273.16))-273.16;
        }
        else if( fD && fH ){
            E = 6.11*exp((5417.7530)*((1/273.16)-(1/(D+273.16))));
            H = (0.5555)*(E-10.0);
            T = humidex-H;
        }
        printf("T %.1lf D %.1lf H %.1lf\n",T,D,humidex);
        getchar();
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章