poj 1326 Mileage Bank【四舍五入】
說實話,這道題雖然不難,但是考人的點還是有的,我WA了一次,後來檢查發現了兩個錯誤,看網上的結題報告,發現基本每個人都錯了很多次。。。這說明不隻是不仔細這麼簡單。。。
這道題有兩個考人的點:
1.1-500 miles 就說明了 0miles 就不能算跑了路,如果出現 0miles 得算0處理
2.就是四舍五入的地方,隻可能出現在 “B” 中,任何整數乘以1.5,隻可能是 X.5 或者 X.0,當 X.5 的時候就要進位,但是 X.0 任為整數,不能進位的。。。【四舍五入的分析和模板我會單獨寫在博客的其他模塊中。。。】
我開始就錯了這兩個地方。。。(下附:題目大意以及別人的思路,以拓寬思路)
AC的代碼:
#include <stdio.h> int main() { char Fcity[1000],Dcity[1000]; char classCode[100]; int miles; int result=0; while(scanf("%s",Fcity)) { if(Fcity[0]=='0') { printf("%d\n",result); //每個測試數據之前初始化 result=0; continue; } if(Fcity[0]=='#') return 0; scanf("%s%d%s",Dcity,&miles,classCode); if(miles<=0) continue; //輸入結束,處理開始 if(classCode[0]=='F') result+=miles*2; //注意!!! else if(classCode[0]=='B') { if(miles*1.5==(int)(miles*1.5)) result=result+(int)(miles*1.5); else result=result+(int)(miles*1.5)+1; } else if(classCode[0]=='Y') { if(miles<=500) result+=500; else result+=miles; } } return 0; }
題意:一個飛行員為一家航空公司服務,他每次駕駛一個航班,就能按駕駛的裏程數賺取一定的費用。該航空公司有3種航班,每種航班的裏程數結算規則如下:First Class,裏程數+100%裏程數補貼;Business Class,裏程數+50%裏程數補貼;Economy Class,不足500按500算,500以上就算裏程數。現給定一個飛行員駕駛的航班,問他最後結算時的裏程數是多少。
網上別人的思路:根據題目描述,直接根據航班類型疊加即可。模擬題。注意的是,小數部分是四舍五入。其實,小數隻會出現在50%裏程數補貼中,+1再除以2就行。
最後更新:2017-04-03 14:53:52