PTA 乙级 1064 朋友数 (20分) C++

 

 思路:对于每个输入的数每位相加后的数(朋友数)存入一个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 }

 

posted @ 2020-09-03 11:54  上帝的绵羊  阅读(170)  评论(0编辑  收藏  举报