【题目链接】
【题目考点】
-
循环结构 (嵌套);
-
数位拆分;
-
擂台法(求最值);
【解题逻辑】
-
输入整数n,循环指定的n次;
-
定义变量 maxsum 并初始化为 0,作为存储最大数位和的 "擂台";
-
循环体中输入读取一个整数ai(用 long long 存储避免溢出);
-
对每个 ai 进行数位拆分,累加所有数位得到数位和 sum;
-
用数位和 sum 与 maxsum 打擂台:若 sum 更大,则更新 maxsum 为 sum;
-
所有数字处理完毕后,输出最终的最大数位和 maxsum;
【题解代码】
- 输入一个整数 n:代表接下来要输入 n 个整数;
cpp
int n;
cin>>n;
int maxsum=0;// 擂台变量:保存当前最大的数位和,初始值为 0
- 循环 n 次,每次输入一个整数ai,数位拆分ai并计算数位和;
cpp
while(n--){
long long ai;
cin>>ai;
int sum=0;
// 数位拆分:计算当前数字 ai 的数位和
while(ai){ // 拆分ai的每一位,直到 ai 变为 0
sum+=ai%10; // 取 ai 的个位数字,累加到数位和
ai/=10;
}
if(sum>maxsum){// 用ai的数位和与最大值打擂台
maxsum=sum;
}
}
- 所有数字处理结束,输出最大数位和 ;
cpp
cout<<maxsum;