C 蓝桥杯历届试题——大臣的旅费、判断闰年

甜蜜旋律 2024-08-09 ⋅ 16 阅读

1. 大臣的旅费

问题描述

某国国王最近为了提升大臣们的才干,决定安排大臣们去其他国家进行学习交流。每个大臣可以选择不同的交通方式,包括飞机、火车和汽车。但是在预算有限的情况下,国王希望将大臣们的旅费开销尽量降低。

为了简化问题,我们将大臣之间的距离看作是单位距离。不同交通工具的费用如下:

  • 飞机:每单位距离花费10元;
  • 火车:每单位距离花费5元;
  • 汽车:每单位距离花费3元。

请你帮助国王计算出大臣们出行的最低旅费。

输入格式

输入的第一行为一个整数n(1<=n<=100),表示大臣的数量。

接下来n行,每行包括大臣到达目的地的距离(单位距离为100公里)。

输出格式

输出一个整数,表示大臣们的最低旅费。

示例

输入:

2
2
2

输出:

30

解题思路

这道题目可以使用贪心算法来解决。贪心算法是一种通过每一步的局部最优选择来达到整体最优解的算法。

我们根据题目给出的费用单位,可以发现:

  • 汽车的费用是最低的,所以在目的地距离小于等于3的时候,我们直接选择汽车即可;
  • 当目的地距离大于3,小于等于5的时候,我们选择火车;
  • 当目的地距离大于5,小于等于10的时候,我们选择飞机;
  • 当目的地距离大于10的时候,我们可以选择飞机和火车的组合,因为飞机的费用相对较高,我们优先考虑火车。

根据上述规则,我们可以使用以下代码来实现求解:

#include <iostream>

using namespace std;

int main() {
    int n;  // 大臣数量
    cin >> n;

    int total_cost = 0;  // 总费用

    for (int i = 0; i < n; i++) {
        int distance;  // 目的地距离
        cin >> distance;

        if (distance <= 3) {
            total_cost += distance * 3;
        } else if (distance <= 5) {
            total_cost += distance * 5;
        } else if (distance <= 10) {
            total_cost += distance * 10;
        } else {
            total_cost += 50 + (distance - 10) * 5;
        }
    }

    cout << total_cost << endl;

    return 0;
}

2. 判断闰年

问题描述

给定一个正整数n,判断它是否是闰年。

公历年份是4的倍数的,且不是100的倍数,为闰年。或者是400的倍数的,为闰年。

输入格式

输入一个整数n(1<=n<=5000)。

输出格式

输出一个字符串,如果n是闰年则输出"Yes",否则输出"No"。

示例

输入:

2008

输出:

Yes

输入:

1900

输出:

No

解题思路

根据题目给出的闰年判断规则,我们可以使用以下代码来实现求解:

#include <iostream>

using namespace std;

int main() {
    int n;  // 年份
    cin >> n;

    if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }

    return 0;
}

以上就是本文对蓝桥杯历届试题中大臣的旅费和判断闰年两道题目的详细解答。希望对你的学习有所帮助!


全部评论: 0

    我有话说: