加载中...

浙江理工大学入队200题——18C

问题 C: 快递费

题目描述

小明在 “双十一” 购物节中跟风买了很多商品,在之后的若干天内陆续收到了这些商品的快递。
逐渐冷静后的小明发现,好多商品都是自己一时冲动买下的,本就是可有可无的东西,于是产生了退货的想法。
由于不是商品本身质量的问题,这些退货的快递费是要由小明自己来承担的。
你的任务:根据快递费的计算规则,请你帮小明计算一下他应该支付的快递费用。
计算规则如下:
重量不超过 2000克(含2000 克),需支付基本费用10 元。
超过2000 克的部分,每 500克加收超重费4 元,不足500 克按500 克计算。
每满 5000克可以优惠5 元。
如果选择加急,多收5 元。

输入

一行两个数,为小明一件要退货商品的重量W ,以及小明是否选择加急(1:加急,0:不加急)。

输出

一行一个数,为小明需要为这件退货商品支付的快递费。

样例输入 Copy

【样例输入1】
2000 1
【样例输入2】
2000 0

样例输出 Copy

【样例输出1】
15
【样例输出2】
10
提示
对于100% 的数据:0<=W<=106 。

题解

重点:不足500g该怎么换算
解:a/500 与a*1.0/500是否相等

代码(AC)

点击查看代码
#include<stdio.h>
int main()
{
	int m,a,money,n;
	float b;
	scanf("%d%d",&m,&n);
	if(m<=2000) money=10;
	else if(m>2000)
	{
		a=(m-2000)/500;
		b=(m-2000)*1.0/500;
		if(a==b)
		{
			money=10+4*a;
		}
		else if(a<b)
		{
			money=10+(a+1)*4;
		}
		if(m>=5000)
		{
			a=m/5000;
			money=money-a*5;
		}
	}
	if(n==0)
	{
		printf("%d\n",money);
	}
	else if(n==1)
	{
		money=money+5;
		printf("%d\n",money);
	}
	return 0;
}
posted @ 2022-10-30 14:02  shany212  阅读(59)  评论(0编辑  收藏  举报