OneCoder Avatar
OneCodercoderli.com · 937 篇博文
二级

C++ 算法考级专栏

真题分析、矩阵探测、递归回溯与基础语法

🎨 视觉封面

【GESP】C++二级练习 luogu-B2094, 不与最大数相同的数字之和

📅 2024-11-22·✍️ OneCoder·计算中...·⏱️ 4 分钟
#GESP#C++#多重循环

二级知识点,分支/循环嵌套知识点练习。可能实现方法上未必一定需要嵌套,但是题目难度上我觉得应该可以算二级水平。

luogu-B2094

题目要求

题目描述

输出一个整数数列中不与最大数相同的数字之和。

输入格式

输入分为两行:

第一行为 N(NN(N 为接下来数的个数,N100)N \le 100)

第二行为 NN 个整数,数与数之间以一个空格分开,每个整数的范围是 1000,000-1000,0001000,0001000,000

输出格式

输出为 NN 个数中除去最大数其余数字之和。

样例输入 #1

BASH
3
1 2 3

样例输出 #1

BASH
3

题目分析

这是一道的数学题,需要计算一个整数数列中除去最大数其余数字之和。我们可以使用一个循环来遍历整个数列,同时记录最大数和最大数出现的次数。最后,我们可以输出数列中除去最大数其余数字之和。

示例代码

CPP
#include <iostream>
using namespace std;
int main() {
    int n; // 定义一个整数变量n
    cin >> n; // 从输入流中读取n的值
    int ans = 0; // 定义一个整数变量ans,用于存储数字之和
    int a; // 定义一个整数变量a,用于存储每个数
    int max = 0; // 定义一个整数变量max,用于存储最大数
    int max_times = 0; // 定义一个整数变量max_times,用于存储最大数出现的次数
    for (int i = 1; i <= n; i++) { // 循环n次,读取每个数
        cin >> a; // 从输入流中读取a的值
        if (i == 1) { // 如果是第一个数
            max = a; // 将a赋值给max
            max_times = 1; // 最大数出现的次数为1
        } else { // 如果不是第一个数
            if (a > max) { // 如果a大于max
                max = a; // 将a赋值给max
                max_times = 1; // 最大数出现的次数为1
            } else if (a == max) { // 如果a等于max
                max_times++; // 最大数出现的次数加1
            }
        }
        ans += a; // 将a加到ans上
    }
    cout << ans - max * max_times; // 输出ans减去max乘以max_times的值
    return 0; // 返回0,表示程序执行成功
}

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!