GESP认证C++编程真题解析 | 202509 一级

编程题

B4409 商店折扣

【题目来源】

洛谷:B4409 [GESP202509 一级] 商店折扣 - 洛谷

【题目描述】

商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满 \(x\) 元减 \(y\) 元;第二种方案是直接打 \(n\) 折,也就是说价格变为原先的 \(n/10\)。这里的 \(x,y,n\) 均是正整数,并且 \(1≤y<x\)\(1≤n<10\)

需要注意的是,第一种方案中满减优惠只能使用一次。例如购物满 \(10\) 元减 \(3\) 元时,若挑选了价格总和为 $33 $ 元的物品,只能减免 \(3\) 元,需要支付 \(30\) 元。

小明在商店挑选了价格总和为 \(p\) 元的物品,结账时只能使用一种优惠方案。小明最少需要支付多少钱呢?

【输入】

四行,四个正整数 \(x,y,n,p\),含义见题目描述。

【输出】

一行,一个小数,表示小明最少需要支付多少钱,保留两位小数。

【输入样例】

8
7
9
10

【输出样例】

3.00

【算法标签】

《洛谷 B4409 商店折扣》 #分支结构# #GESP# #2025#

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int x;          // 第一个参数(具体含义根据题目)
int y;          // 第二个参数(具体含义根据题目)
int n;          // 第三个参数(具体含义根据题目)
int p;          // 第四个参数(具体含义根据题目)
double ans1;    // 第一种计算结果
double ans2;    // 第二种计算结果

int main()
{
    // 输入四个参数
    cin >> x >> y >> n >> p;

    // 计算第一种可能的结果
    if (p >= x)
    {
        ans1 = p - y;  // 如果p大于等于x,结果为p减去y
    }
    else
    {
        ans1 = p;       // 否则结果就是p本身
    }

    // 计算第二种可能的结果
    ans2 = 1.0 * p * n / 10;  // p乘以n除以10,注意使用1.0保证浮点运算

    // 比较两种结果,输出较小的那个,保留两位小数
    if (ans1 > ans2)
    {
        printf("%.2lf", ans2);
    }
    else
    {
        printf("%.2lf", ans1);
    }

    return 0;
}

【运行结果】

8
7
9
10
3.00

B4410 金字塔

【题目来源】

洛谷:B4410 [GESP202509 一级] 金字塔 - 洛谷

【题目描述】

金字塔由 \(n\) 层石块垒成。从塔底向上,每层依次需要 \(n×n,(n−1)×(n−1),⋯,2×2,1×1\) 块石块。请问搭建金字塔总共需要多少块石块?

【输入】

一行,一个正整数 \(n\),表示金字塔的层数。

【输出】

一行,一个正整数,表示搭建金字塔所需的石块数量。

【输入样例】

2

【输出样例】

5

【算法标签】

《洛谷 B4410 金字塔》 #循环结构# #GESP# #2025#

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int n;              // 输入的整数n
long long ans = 0;  // 存储平方和的变量,初始化为0

int main()
{
    // 输入整数n
    cin >> n;

    // 循环计算1到n的平方和
    for (int i = 1; i <= n; i++)
    {
        ans += i * i;  // 将当前数字的平方累加到ans中
    }

    // 输出最终的平方和结果
    cout << ans << endl;

    return 0;
}

【运行结果】

2
5
posted @ 2026-02-15 16:08  团爸讲算法  阅读(2)  评论(0)    收藏  举报