题目
思路
一开始审错题了,如果不是偶数就要先乘3加一再减半。本题用数组a存储输入的数,用数组pan表示是否为关键数。
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int pan[10000];
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int k,n;
int flag = 0;
cin >> k;
vector<int>a(k);
for (int i = 0;i < k;i++)
{
cin >>n;
a[i] = n;
while (n != 1)
{
if (n % 2 != 0)
{
n = 3 * n + 1;
}
n = n / 2;
if (pan[n] == 1)
break;
pan[n] = 1;
}
}
sort(a.begin(), a.end(), cmp);
for (int i = 0;i < a.size();i++)
{
if (pan[a[i]] == 0)
{
if (flag == 1)
{
cout << " ";
}
cout << a[i];
flag = 1;
}
}
return 0;
}