PAT甲級C語言.1005. 繼續(3n+1)猜想

#include<stdio.h>
int main()
{
	int i,j,num,k,a[101],length;
	for(i=0;i<101;++i)
		a[i]=-1;
	scanf("%d",&num);
	for(i=0;i<num;++i)
	{
		scanf("%d",&k);
		a[k]=0;
	}
	for(i=0;i<101;++i)
	{
		if(a[i]!=0) continue;
		else
		{
			j=i;
			while(j!=1)
			{
				if(j%2==0)
					j=j/2;
				else
					j=(3*j+1)/2;
				if(j<=100)   //此處不加if(j<=100)會出現部分測試數據的段錯誤
					a[j]=1;
			}
		}
	}
	for(i=0,length=0;i<101;++i)
	{
		if(a[i]==0) length++;
	}
	for(i=100;i>0;--i)
	{
		if(a[i]==0)
		{
			if(length!=1) 
			{
				--length;
			    printf("%d",i);
			    putchar(' ');
			}
			else
			{
				printf("%d",i);
				break;
			}
		}
	}
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章