Because we share one sun
Because we share one moon
Because we share every star int the whole sky
Because we share one phrase so profound
#include <stdio.h>
#define MAX_K 101
#define YES 1
#define NO 2
/* 从输入中读一个数,并将相应被坎的数标记为NO */
int read_judge(int s[], int lim){
int i;
scanf("%d", &i); /* 读一个数 */
if(s[i] == NO) /* 若这个数已经被标记成了NO */
return 0; /* 直接返回 */
else{ /* 否则 */
s[i] = YES; /* 将这个第一次输入的数标记为YES */
while(i != 1){ /* 若这个数没有坎到一 */
if(i % 2 != 0)
i = ( 3 * i + 1);
i /= 2; /* 先坎一下 */
if(i > 1 && i < lim ){ /* 坎后数值在1到100(包括100)*/
if(s[i] != NO)
s[i] = NO;
else if(s[i] == NO)
return 0;
}
}
}
}
/* 输出被标记为YES的 */
void print_YES(int s[], int lim){
int i;
int count; /* 为了输出格式 */
count = 0;
for(i = lim-1; i > 1; --i){ /* 注意从大到小的顺序输出 */
if(s[i] == YES){
if( count == 0){ /* 若是第一个输出的数 */
printf("%d", i); /* 直接输出 */
++count;
}else /* 若不是第一个输出的数 */
printf(" %d", i); /* 先输入空格再输出那个数 */
}
}
}
int main(){
int K, i;
int a[MAX_K] = {0};
scanf("%d", &K);
for(i = 0; i < K; ++i)
read_judge(a, MAX_K);
print_YES(a, MAX_K);
return 0;
}