最近在看《算法笔记》,进度不快,固定每天看两道题,最近也很浮躁,感觉内耗太严重,觉得需要把每天写的发出来,也算是一个发泄出口吧。

第一道题很简单,害死人不偿命的(3n+1), alt

主要就是用到了判断奇偶的方法,也就是取模。是偶数就返回这个数的半,不是偶数就把它的(3n+1)砍掉一半。 这样判断一个数字经过多少步能够得到n=1。

#include <stdio.h>
int main(){
int n,flag=0;
scanf("%d",&n);
while(n!=1){
if(n>=1&&n<=1000){
	if(n%2==0){
		n = n/2;
		++flag;
	}
	else{
		n=(3*n+1)/2;
		++flag;
	}
}
}
printf("%d",flag);
return 0;
}

利用while循环语句反复判断n是否是1,此外还需要设置一个变量flag,用来记步,这样,当n=1时,返回的step就是需要的步数。