题解 | 继续xxx定律
继续xxx定律
https://www.nowcoder.com/practice/9cc1055241c547269f58fa8b009e335d
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
while(cin >> n)
{
if(n == 0) return 0;
vector<int> a(n);
for(int i = 0; i < n; i++) cin >> a[i];
vector<int> core(1001);
for(int i = 0; i < n; i++)
{
int x = a[i];
if(core[x] != - 1)
{
if(x <= 1000) core[x] = 1;
while(x != 1)
{
if(x % 2 == 1)
{
x = (3 * x + 1) / 2;
if(x <= 1000) core[x] = -1;
}
else
{
x = x / 2;
if(x <= 1000) core[x] = -1;
}
}
}
}
for(int i = n - 1; i >= 0; i--)
{
if(core[a[i]] == 1) cout << a[i] << " ";
}
}
return 0;
}
查看27道真题和解析
