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就行。

相关文章
|
算法
第K小数 uva 10041 - Vito's Family poj 2388 Who's in the Middle
了解快排的人对int (int l, int r) 这个函数很熟悉,因为这是在快排中用到的,它的作用是对数组的某一段选一个分界点,使得该点左边的数都不大于该点的数,右边的点不小于该点的数,也就是说我们通过一次调用这个函数确定一个数的位置,快排是将该点两边分别进行递归操作,时间复杂度为O(nlogn),而select只是对一边进行递归操作(有点像二分的递归形式),所以时间复杂度仅为O(n)。
54 0
|
网络架构
POJ 3250 Bad Hair Day、POJ 2796 Feel Good(单调栈)
POJ 3250 Bad Hair Day、POJ 2796 Feel Good(单调栈)
POJ-2389,Bull Math(大数乘法)
POJ-2389,Bull Math(大数乘法)
POJ 1844 Sum
POJ 1844 Sum
118 0
|
Go
POJ 1503 Integer Inquiry 简单大数相加
POJ 1503 Integer Inquiry 简单大数相加
99 0
|
人工智能 机器学习/深度学习
|
人工智能 Java
HDU 1003 Max Sum【动态规划求最大子序列和详解 】
Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 250714    Accepted Submission(s): 593...
1295 0
|
Java 人工智能
HDU 2561 第二小整数
第二小整数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10766    Accepted Submission(s): 6548 Problem Description 求n个整数中倒数第二小的数。
964 0
|
Java
HDU 2092 整数解
整数解 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 33425    Accepted Submission(s): 11730 Problem Description 有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,它们到底是真还是假,也就是这种整数到底存不存在,实在有点吃不准,你能快速回答吗?看来只能通过编程。
917 0