文章

【GESP】C++一级练习 luogu-B2048, 计算邮资

GESP一级练习,语分法上涉及分支语句和取余等操作,有一些数学小逻辑,难度★☆☆☆☆。

luogu-B2048

题目要求

题目描述

请根据邮件的重量和用户选择是否加急计算邮费。计算规则:

  • 重量在 $1000$ 以内(包括),基本费 $8$ 元;

  • 超过 $1000$ 克的部分,每 $500$ 克加收超重费 $4$ 元,不足 $500$ 克部分按 $500$ 克计算;

  • 如果用户选择加急,多收 $5$ 元。

输入格式

一行,包含一个正整数 $x$ 和一个字符 c(yn),之间用一个空格隔开,分别表示重量和是否加急。

如果字符是 y,说明选择加急;如果字符是 n,说明不加急。

输出格式

输出一行一个正整数,表示邮费。

样例输入 #1

1
1200 y

样例输出 #1

1
17

提示

对于100%数据 $1\leq x\leq 10^6$


题目分析

本题目要求我们根据输入的邮件重量和用户选择是否加急,计算并输出邮费。根据题目描述,我们需要首先计算基本费,然后根据邮件重量计算超重费,并根据用户选择是否加急计算加急费。最后,我们输出计算得到的总邮费。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
int main() {
    int a; // 定义整数变量a,用于存储邮件重量
    cin >> a; // 从标准输入流读取邮件重量到a
    char b; // 定义字符变量b,用于存储是否加急的选择
    cin >> b; // 从标准输入流读取是否加急的选择到b
    int ans = 8; // 初始化答案为基本费8元
    if (a > 1000) { // 如果邮件重量超过1000克
        a -= 1000; // 计算超过1000克的部分
        ans += (a / 500) * 4; // 计算超重费,每500克加收4元
        if (a % 500 != 0) { // 如果不足500克的部分不为0
            ans += 4; // 加收4元超重费
        }
    }
    if (b == 'y') { // 如果用户选择加急
        ans += 5; // 加收5元加急费
    }
    if (b == 'n') { // 如果用户不选择加急
        ans += 0; // 不加收加急费
    }
    cout << ans; // 输出最终的邮费
    return 0; // 主函数返回0,表示程序执行成功
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

本文由作者按照 CC BY 4.0 进行授权