#include<stdio.h>
int main(void)
{
//1.读取数字
int n;
scanf_s("%d", &n);
//2.把给定数读入数组
int cnt;
int number[100];
int cnt2 = 0;
for (cnt = 0; cnt < n; cnt++)
{
scanf_s("%d", &number[cnt]);
}
/*for (cnt = 0; cnt < n; cnt++)
{
printf("%d ", number[cnt]);
}*/
//3.对每个数进行(3n + 1)猜想
int i;
int search[100] = { 0 };
for (cnt = 0; cnt < n; cnt++)
{
int cover[1000];
for (int k = 0; k < 1000; k++)
{
cover[k] = 0;
}
int num = number[cnt];
for (i = 0; num != 1; i++)
{
if (num % 2 == 0)
{
num /= 2;
cover[i] = num;
}
else
{
num = num * 3 + 1;
cover[i] = num;
}
}
//4.将过程值与给定值一一比较
int j = i;
for (int cnt1 = 0; cnt1 < n; cnt1++)
{
for (i = j; i >= 0; i--)
{
if (number[cnt1] == cover[i])
{
search[cnt1] = 1;
}
}
}
}
//5.查看搜索
for (cnt = n - 1; cnt >= 0; cnt--)
{
if (search[cnt] == 0)
cnt2++;
}
//printf("%d", cnt2);
for (cnt = n - 1; cnt >= 0; cnt--)
{
if (search[cnt] == 0)
{
printf("%d", number[cnt]);
cnt2--;
if (cnt2 != 0)
printf(" ");
}
}
return 0;
}
这个思路只拿了17分
已经证实与格式无关——很可能是某些极限情况无法实现