/*
* @Author: 365JHWZGo
* @Description: 1005 继续(3n+1)猜想 (25 分)
* @Date: 2021-08-31 14:17:42
* @FilePath: \VScodeC++practice\PAT\goOn3n+1.cpp
* @LastEditTime: 2021-08-31 16:09:36
* @LastEditors: 365JHWZGo
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void judge(int n, vector<int> &v)
{
sort(v.rbegin(), v.rend());
v.erase(unique(v.begin(), v.end()), v.end());
bool flag = true;
for (int i = 0; i < v.size(); i++)
{
if (n == v[i])
{
flag = false;
break;
}
}
if (flag)
{
while (n != 1)
{
if (n % 2 == 0)
n /= 2;
else
n = (3 * n + 1) / 2;
v.push_back(n);
}
}
}
int main()
{
int num, n;
cin >> num;
vector<int> v, arr;
vector<int>::iterator it;
for (int i = 0; i < num; i++)
{
cin >> n;
arr.push_back(n);
judge(n, v);
}
sort(v.rbegin(), v.rend());
sort(arr.rbegin(), arr.rend());
v.erase(unique(v.begin(), v.end()), v.end());
for (it = arr.begin(); it != arr.end();)
{
for (int j = 0; j < v.size(); j++)
{
if (*it == v[j])
{
arr.erase(it);
break;
}
if(j==v.size()-1)it++;
}
}
for (int i = 0; i < arr.size(); i++)
{
if (i != arr.size() - 1)
cout << arr[i] << " ";
else cout << arr[i];
}
//system("pause");
return 0;
}
1005 继续(3n+1)猜想 (25 分)满分!
最新推荐文章于 2022-09-09 22:52:04 发布