luogu-B4065 [GESP202412 二级] 数位和
GESP二级真题,多层循环和分支练习,难度★✮☆☆☆。
luogu-B4065 [GESP202412 二级] 数位和
题目要求
题目描述
小杨有 个正整数,小杨想知道这些正整数的数位和中最大值是多少。“数位和”指的是一个数字中所有数位的和。例如:对于数字 ,它的各个数位分别是 。将这些数位相加,得到
因此, 的数位和是 。
输入格式
第一行包含一个正整数 ,代表正整数个数。
之后 行,每行包含一个正整数。
输出格式
输出这些正整数的数位和的最值。
输入 #1
3
16
81
10
输出 #1
9
说明/提示
对于全部数据,保证有 ,每个正整数不超过 。
题目分析
解题思路
- 首先,读取测试数据的数量 ,以了解需要处理的正整数数量。
- 接着,对于每个正整数,通过循环取出其每一位数(从个位到最高位),并将这些位数相加,计算出该数的数位和。
- 在计算每个数的数位和时,需要与当前的最大数位和进行比较。如果当前数的数位和大于最大数位和,则更新最大数位和,确保最大数位和始终保持着最大的数位和。
- 最后,输出最大数位和,即所有正整数中数位和最大的那个数的数位和。
{% include custom/custom-post-content-inner.html %}
示例代码
#include <iostream>
using namespace std;
int main() {
int n; // 读取测试数据的数量
cin >> n;
long long a; // 读取正整数 a
long long max = 0; // 初始化最大数位和为0
for (int i = 1; i <= n; i++) {
cin >> a; // 读取每个正整数
int ans = 0; // 初始化当前数的数位和为0
while (a != 0) {
int j = a % 10; // 取出当前数的最后一位
ans += j; // 将最后一位加到数位和中
a /= 10; // 移除当前数的最后一位
}
if (ans > max) {
max = ans; // 如果当前数的数位和大于最大数位和,则更新最大数位和
}
}
cout << max; // 输出最大数位和
return 0;
}
{% include custom/custom-post-content-footer.md %}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP 认证学习微信公众号

Last updated on