输入n个不超过1000的整数(n≤50000)。然后求出每个数的数字和,再按每个数的数字和由小到大排列输出。
输入格式
第一行为整数n
第二行为n个整数
输出格式
由小到大排列的每个数的数字和(每个数之间保留一个空格)。
输入/输出例子1
输入:
4
33 104 87 16
输出:
5 6 7 15
样例解释
无
代码解释
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[50005],s[50005];//n <= 50000,所以数组就定义成50005
cin >> n;//输入n
for(int i = 0; i < n; i++){//之所以从0开始是因为用sort循环更方便
cin >> a[i];//输入每个数字
while(a[i] != 0){//只要数字还有位数,就执行拆分
s[i] += a[i] % 10;//s负责帮忙统计a[i]的每个位数之和,%10就是取个位数
a[i] = a[i] /10;//a[i]减少个位数
}
}
sort(s,s+n);//sort循环进行从小到大排序
for(int i = 0; i < n; i++) cout << s[i] << " ";//输出每个数字的每个位数之和
return 0;
}
总体代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[50005],s[50005];
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
while(a[i] != 0){
s[i] += a[i] % 10;
a[i] = a[i] /10;
}
}
sort(s,s+n);
for(int i = 0; i < n; i++) cout << s[i] << " ";
return 0;
}
好了,这期题目讲解到此结束,请给我一个点赞、关注、评论,谢谢