数位和-洛谷B4065 [GESP202412 二级]

题目描述

小杨有 n 个正整数,小杨想知道这些正整数的数位和中最大值是多少。“数位和”指的是一个数字中所有数位的和。例如:对于数字 12345,它的各个数位分别是 1,2,3,4,5。将这些数位相加,得到

1+2+3+4+5=15

因此,12345 的数位和是 15。

输入格式

第一行包含一个正整数 n,代表正整数个数。

之后 n 行,每行包含一个正整数。

输出格式

输出这些正整数的数位和的最大值。

输入输出样例

说明/提示

对于全部数据,保证有 1≤n≤105,每个正整数不超过 10^12。

解题思路

  1. 首先,读取测试数据的数量 𝑛,以了解需要处理的正整数数量。
  2. 接着,对于每个正整数,通过循环取出其每一位数(从个位到最高位),并将这些位数相加,计算出该数的数位和。同前面讲到的【计数】【数位之和】
  3. 在计算每个数的数位和时,需要与当前的最大数位和进行比较。如果当前数的数位和大于最大数位和,则更新最大数位和,确保最大数位和始终保持着最大的数位和。
  4. 最后,输出最大数位和,即所有正整数中数位和最大的那个数的数位和。

代码实现

#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、输出格式要求更严格(如必须换行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智码行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值