题目


解法1

点击查看代码
#include <iostream>
#include <set>

using namespace std;

// 计算数位和
int tosum(int n) {
    int ans = 0;
    while (n > 0) {
        ans += n % 10;
        n /= 10;
    }
    return ans;
}

int main() {
    int n;
    scanf("%d", &n);
    
    set<int> s;
    
    // 直接计算 friend ID 并存入 set
    for (int i = 0, num; i < n; i++) {
        scanf("%d", &num);
        s.insert(tosum(num));
    }

    // 输出 friend ID 的数量
    printf("%d\n", int(s.size()));

    // 依次输出所有 friend ID
    bool first = true;
    for (int id : s) {
        if (!first) printf(" ");
        printf("%d", id);
        first = false;
    }
    
    return 0;
}