思路:对于每个输入的数每位相加后的数(朋友数)存入一个vector中,利用sort对朋友数进行升序排序,对所有朋友数进行遍历,统计所有不重复的的朋友数的总数,输出总数后,再次对所有朋友数进行遍历,输出不重复的朋友数(这个方法是我第一次想出来的方法,有些繁琐,可以尝试用集合的思路)
1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 5 using namespace std; 6 7 int main() { 8 int n = 0; 9 int num = 0; 10 int flag = 0; 11 int count = 0; 12 cin >> n; 13 vector<int> sum(n); 14 for (int i = 0; i < n; ++i) { 15 cin >> num; 16 int tmp = -1; 17 while (tmp != 0) { //每位相加 18 tmp = num % 10; 19 num /= 10; 20 sum[i] += tmp; 21 } 22 } 23 sort(sum.begin(), sum.end()); //递增排序 24 int tmp1 = 0; 25 for (int i = 0; i < n; ++i) { //计算总共有多少个朋友数 26 if (sum[i] != tmp1) { count++; tmp1 = sum[i]; } 27 } 28 cout << count << endl; 29 int tmp2 = 0; 30 for (int i = 0; i < n; ++i) { 31 if (sum[i] != tmp2) { //保证不会输出重复的 32 if (flag) cout << ' '; 33 cout << sum[i]; 34 tmp2 = sum[i]; 35 flag = 1; 36 } 37 } 38 return 0; 39 }