题目描述
小杨有 n 个正整数,小杨想知道这些正整数的数位和中最大值是多少。“数位和”指的是一个数字中所有数位的和。例如:对于数字 12345,它的各个数位分别是 1,2,3,4,5。将这些数位相加,得到
1+2+3+4+5=15
因此,12345 的数位和是 15。
输入格式
第一行包含一个正整数 n,代表正整数个数。
之后 n 行,每行包含一个正整数。
输出格式
输出这些正整数的数位和的最大值。
输入输出样例

说明/提示
对于全部数据,保证有 1≤n≤105,每个正整数不超过 10^12。
解题思路
- 首先,读取测试数据的数量 𝑛,以了解需要处理的正整数数量。
- 接着,对于每个正整数,通过循环取出其每一位数(从个位到最高位),并将这些位数相加,计算出该数的数位和。同前面讲到的【计数】【数位之和】
- 在计算每个数的数位和时,需要与当前的最大数位和进行比较。如果当前数的数位和大于最大数位和,则更新最大数位和,确保最大数位和始终保持着最大的数位和。
- 最后,输出最大数位和,即所有正整数中数位和最大的那个数的数位和。
代码实现
#include <iostream>
using namespace std;
int main(){
int n;cin>>n;
long a,m=-1,sum=0;
while(n--){
cin>>a;
sum=0;
while(a){
sum+=a%10;
a/=10;
}
m=max(m,sum);
}
cout<<m<<endl;
}
上面的代码一定要注意:a,m,sum的数据类型如果是int型,虽然dev c++可以通过,但是洛谷平台的测试用例全部WA!
为什么Dev-C++能通过但洛谷不行?
1、Dev-C++使用的测试数据可能不包含边界情况
2、洛谷的测试数据更严格,可能包含:
- n=0的情况
- 非常大的数字
- 数字0的情况
3、输出格式要求更严格(如必须换行)

1647

被折叠的 条评论
为什么被折叠?



