
没有婼姐写得好
将所有的输入放入mp,mp2
覆盖的数存入mp
一开始认为mp中只出现一次的元素就是,忘了可能只被覆盖一次的情况
所以添加了mp2保存输入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
#include <iostream> #include<algorithm> #include<map> #include<vector> using namespace std;
int main() { int N; scanf("%d", &N); map<int,int> mp,mp2; for (int i = 0; i<N; i++) { int temp; scanf("%d", &temp); mp[temp]++; mp2[temp] = 1; while (temp != 1) { if (temp % 2 == 0) { temp /= 2; mp[temp]++; } else { temp = (temp * 3 + 1) / 2; mp[temp]++; } } } vector<int> ve; for (map<int, int>::iterator it = mp.begin(); it != mp.end(); it++) { if (it->second == 1&&mp2[it->first]==1) ve.push_back(it->first); } sort(ve.begin(), ve.end()); for (int i = ve.size()-1; i>=0; i--) { printf("%d", ve[i]); if (i != 0) printf(" "); } return 0; }
|
近期评论