社区讨论

c语言 大佬们来帮我看一眼!

P5727【深基5.例3】冰雹猜想参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lok08r7o
此快照首次捕获于
2023/11/04 20:12
2 年前
此快照最后确认于
2023/11/04 21:58
2 年前
查看原帖
一开始我是这么写的,而后我发现第一个数存错了,总是会变成 2
int main(){
	int a[1000];
	int n,i=1;
	scanf("%d",&n);
	while(1){
		a[0]=n;
		if(n%2==1){
			n=n*3+1;
			a[i]=n;
		}else{
			n=n/2;
			a[i]=n;
		}
		if(a[i]==1) break;
		++i;
	}
	for(int j = i;j >= 0;--j){
		printf("%d ",a[j]);
	}
	return 0;
}
然后我就想了个歪招
int main(){
	int a[1000];
	int n,i=0;
	scanf("%d",&n);
	int k = n; 
	while(1){
		if(n%2==1){
			n=n*3+1;
			a[i]=n;
		}else{
			n=n/2;
			a[i]=n;
		}
		if(a[i]==1) break;
		++i;
	}
	for(int j = i;j >= 0;--j){
		printf("%d ",a[j]);
	}
	printf("%d",k);
	return 0;
}
但是还是只有80分,第三个错了

回复

1 条回复,欢迎继续交流。

正在加载回复...