Java
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Set<Integer> set = new TreeSet<>();
for (int i = 0; i < n; i++) {
int x = sc.nextInt();
int sum = 0;
while (x > 0) {
sum += x % 10;
x /= 10;
}
set.add(sum);
}
System.out.println(set.size());
boolean isFirst = true;
for (int num : set) {
if (!isFirst) {
System.out.print(" ");
} else {
isFirst = false;
}
System.out.print(num);
}
System.out.println();
sc.close();
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
#include <set>
using namespace std;
int n;
set<int> s;
int main() {
scanf("%d", &n);
while (n--) {
int x, sum = 0;
scanf("%d", &x);
while (x) {
sum += x % 10;
x /= 10;
}
s.insert(sum);
}
printf("%d\n", s.size());
bool is_first = true;
for (auto it: s) {
if (is_first) is_first = false;
else printf(" ");
printf("%d", it);
}
printf("\n");
return 0;
}