最近在看《算法笔记》,进度不快,固定每天看两道题,最近也很浮躁,感觉内耗太严重,觉得需要把每天写的发出来,也算是一个发泄出口吧。
第一道题很简单,害死人不偿命的(3n+1),
主要就是用到了判断奇偶的方法,也就是取模。是偶数就返回这个数的半,不是偶数就把它的(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就是需要的步数。