閱讀724 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 四舍五入【模板】
  下一篇:go Magento Block Cache Queue For High Traffic Sites