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

时间: 2024-11-01 00:01:26

poj 1326 Mileage Bank【四舍五入】的相关文章

poj 2390 Bank Interest

做这种题目,有一种回到大一时候的感觉... 唯一需要注意的就是c语言中的取整,对于一个double型的数据,直接在前面用(int)就可以了... #include <stdio.h> int main() { int R,M,Y; scanf("%d%d%d",&R,&M,&Y); double rate=(double)R/100+1.0; double result=M; while(Y--) result*=rate; printf("

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj 1276 背包问题 编译错误 求大神看看 英汉题意如下

问题描述 poj 1276 背包问题 编译错误 求大神看看 英汉题意如下 Description A Bank plans to install a machine for cash withdrawal. The machine is able to deliver appropriate @ bills for a requested cash amount. The machine uses exactly N distinct bill denominations, say Dk, k=

PHP四舍五入精确小数位及取整

  (1)php保留三位小数并且四舍五入  代码如下   $num=0.0215489; echo sprintf("%.3f", $num); // 0.022 (2)php保留三位小数不四舍五入  代码如下   $num=0.0215489; echo substr(sprintf("%.4f", $num),0,-1); // 0.021 (3)php进一法取整数(这个在分页程序的页数程序里面会用到)  代码如下   echo ceil(4.3);    //

atm机源程序-Bank Account Management System 银行账户管理子系统

问题描述 Bank Account Management System 银行账户管理子系统 1.项目描述:项目描述 这是一个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户. 2.模块JAVAEE. 3.项目详细内容介绍 要求1:封装一个Account类 - 业务数据 写一个账户类(Account),属性并且完全封装(注意:要辨别每个属性的set/get方法是否需要公开): id:账户号码 长整数(Long) password:账户密码 字符串类型(Strin

android-Android四舍五入float类型问题

问题描述 Android四舍五入float类型问题 我的测试结果不一样: public void testRoundFloat() { final NumberFormat format = NumberFormat.getNumberInstance(); format.setMaximumFractionDigits(2); format.setMinimumFractionDigits(2); format.setRoundingMode(RoundingMode.HALF_UP); as

PHP四舍五入精确小数位及取整的方法

本篇文章将使用php对数字进行四舍五入保留N位小数,以及使用php对数字进行取整的方法做个小总结. (1)php保留三位小数并且四舍五入 $num=0.0215489; echo sprintf("%.3f", $num); // 0.022 (2)php保留三位小数不四舍五入 $num=0.0215489; echo substr(sprintf("%.4f", $num),0,-1); // 0.021 (3)php进一法取整数(这个在分页程序的页数程序里面会用

用Round函数让四舍五入变的更精确

在前面,我们介绍了,利用INT函数来构造四舍五入函数的方法,但是,有时候我们会遇到更多小数位的四舍五入,用INT函数构造就会有些吃力了,Excel的Round函数可以帮助我们.Round函数的作用是返回某个数字按指定位数取整后的数字.语法为"ROUND(number,num_digits)",其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,如果 num_digits 大于 0,则四舍五入到指定的小数位,如果 num_digits 等于