题目大意
给出一串数字序列,对于其中任意一个数字,求出它的各位相加之和,并按照升序顺序输出结果。
基本思路
在接收输入数据的时候就把该数字的每一位相加,并把结果插入一个set集合中。因为set是有序的、不重复的,所以set的size值就是输出的个数,set中的每一个数字即所有答案的数字序列
代码
#include <bits/stdc++.h>
using namespace std;
int n;
set<int> s;
//将某一个数字每一位相加并返回
int getFriendNum(int n){
int sum=0;
do {
sum=sum+n%10;
n=n/10;
}while(n!=0);
return sum;
}
int main(){
cin>>n;
while(n--){
int ans;
cin>>ans;
s.insert(getFriendNum(ans));
}
cout<<s.size()<<endl;
for(auto it = s.begin(); it != s.end(); it++) {
if(it != s.begin()) printf(" ");
printf("%d", *it);
}
return 0;
}