首页 > 学院 > 开发设计 > 正文

PAT甲级C语言.1005. 继续(3n+1)猜想

2019-11-08 00:50:31
字体:
来源:转载
供稿:网友
#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;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表