#include <stdio.h>
int main(void)
{
int n, i, j, temp;
scanf("%d", &n); //接收数量
int num[n];
for(i = 0; i < n; i++) //接收数字
scanf("%d", &num[i]);
for(i = 0; i < n; i++){
temp = num[i]; //用temp临时存储3n+1过程中的数
while(temp != 1 && temp != 0){
if(temp % 2 == 0)
temp /= 2;
else
temp = (3 * temp + 1) / 2;
for(j = 0; j < n; j++) //过程中出现的数字与数组中的重合 则用0标注
if(i != j && temp == num[j]){
num[j] = 0;
break;
}
}
}
for(i = 0; i < n - 1; i++) //冒泡排序
for(j = 0; j < n - i - 1; j++)
if(num[j] < num[j + 1]){
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
for(i = 0; i < n; i++){ //输出最终结果
if(num[i] == 0)
break;
if(num[i + 1] == 0)
printf("%d", num[i]);
else
printf("%d ", num[i]);
}
return 0;
}
PAT1005 继续(3n+1)猜想
最新推荐文章于 2024-07-07 21:10:32 发布