基础邮资加超重部分的向上取整计费,再判断是否加急。
OJ: noi_openjudge
题目 ID: ch0104-14
难度:入门
标签:数学条件判断python
日期: 2026-07-30 23:01
题意
1000 克以内收费 8 元;超出部分每 500 克或不足 500 克收费 4 元;加急另加 5 元。
思路
先初始化基础费。超重 extra 的计费段数是正整数向上除法 (extra + 499) // 500,再乘 4。最后独立判断加急字符是否为 y。
代码
Python代码
python
weight_text, express = input().split()
weight = int(weight_text)
fee = 8
if weight > 1000:
fee += (weight - 1000 + 499) // 500 * 4
if express == "y":
fee += 5
print(fee)C++代码
cpp
#include <cstdio>
int main(){
int w,y;
scanf("%d",&w);
scanf("%c",&y);
scanf("%c",&y);
int h = 8;
if( w - 1000 > 0){
int c = w - 1000;
h = h + (c / 500) * 4;
if( c % 500 != 0){
h = h +4;
}
}
if( y == 'y')
h = h + 5;
printf("%d",h);
return 0;
}复杂度
时间复杂度和额外空间复杂度均为
总结
不足一个计费单位也收费时,要用向上取整而不是普通整除。