二级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++二级练习 luogu-B2094, 不与最大数相同的数字之和
📅 2024-11-22·✍️ OneCoder·计算中...·⏱️ 4 分钟
#GESP#C++#多重循环
二级知识点,分支/循环嵌套知识点练习。可能实现方法上未必一定需要嵌套,但是题目难度上我觉得应该可以算二级水平。
luogu-B2094
题目要求
题目描述
输出一个整数数列中不与最大数相同的数字之和。
输入格式
输入分为两行:
第一行为 为接下来数的个数,;
第二行为 个整数,数与数之间以一个空格分开,每个整数的范围是 到 。
输出格式
输出为 个数中除去最大数其余数字之和。
样例输入 #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 (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!