B4065 [GESP202412 二级] 数位和

· · 题解

欢迎报名洛谷网校,报名课程可以获得对应组别的知识点讲解与答疑服务,期待和大家一起进步!点击图片即可报名。

:::align{center} :::

本题考查循环结构、循环嵌套。

首先,读入 n 个正整数,自然想到使用循环结构。需要注意,这里的正整数是可以达到 10^{12} 的大小的,使用 int 类型无法容纳,需要使用 long long 类型存储。接下来,需要计算每个读入的正整数 x 的数位和。

计算正整数的数位和也需要使用一重循环:每次用 sum += x % 10 让总和加上 x 的个位,再用 x /= 10 去除 x 的个位,直到 x0 为止。这一段流程的参考代码:

int sum = 0;
while (x) {
    sum += x % 10;
    x /= 10;
}

接下来,将求得的 sum 与当前得到的答案最大值 ans 做比较,进行“擂台法”的比较。需要注意,ans 的初始值应当设置为 0

if (sum > ans)
    ans = sum;

当然擂台法的步骤也可以使用 max 函数完成。

ans = max(ans, sum);