260
技術社區[雲棲]
poj 3299 Humidex
注:標準輸入下,double一定要用 %lf 輸入,輸出可以是 %f 也可以是 %lf
其實就是純粹的數學公式推導,然後就是格式的控製(本人認為題目的難點在此,雖然題目不難,O(∩_∩)O哈哈~),再就是精度問題
對於輸入的格式控製,因為有字符輸入,建議用s%弄,不然總是考慮空格也不方便。。。開始用單個字符 (“%c”,ch) 一直輸出不對,後來單步調試才發現是輸了一個空格進去,進入了不同的循環。
看別人的結題報告,貌似用cin》可以不用管空格,可以直接cin>>ch;
而且輸出控製裏麵有 cout<<setprecision(1)<<fixed<<"T "<<t<<" D "<<d<<" H "<<h<<endl;
一次AC的代碼:
#include <stdio.h> #include <math.h> #define MAXN 1000 int main() { char ch[2]; double t,d,h; int i; while(1) { t=d=h=MAXN; //都在-100~100之間,這個是看哪個沒有輸入的 for(i=0;i<2;i++) { scanf("%s",ch); if(ch[0]=='E') return 0; else if(ch[0]=='T') scanf("%lf",&t); else if(ch[0]=='D') scanf("%lf",&d); else if(ch[0]=='H') scanf("%lf",&h); } //test /*if(t!=MAXN) printf("temperature = %f\n",t); if(d!=MAXN) printf("dewpoint = %f\n",d); if(h!=MAXN) printf("humidex = %f\n",h); printf("%f\n",t); printf("%f\n",d); printf("%f\n",h);*/ if(h==MAXN) h=t+0.5555*(6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10); else if(t==MAXN) t=h-0.5555*(6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10); else if(d==MAXN) d=1/((1/273.16)-((log((((h-t)/0.5555)+10.0)/6.11))/5417.7530))-273.16; printf("T %.1lf D %.1lf H %.1lf\n",t,d,h); } return 0; }
最後更新:2017-04-03 14:53:40