B1001:害死人不偿命的(3n+1)猜想(15')

思路:循环判断。n为奇数,n=(3*n+1)/2;n为偶数,n/=2。

代码:

#include<stdio.h>
int main(){
    int i,n;
    do{
        scanf("%d",&n);
    }
    while(n>1000||n<=0);  //输入不大于1000的正整数
    if(n==1){
        printf("0");  //n为1直接输出
    }
    else{
        for(i=0;n!=1;i++){
            if(n%2==1){
                n=(3*n+1)/2;
            }
            else n/=2;
        }
    printf("%d",i);
    }
    return 0;
}

二刷代码:

#include<stdio.h>
int main(){
    int n,count = 0;
    scanf("%d",&n);
    while(n != 1){
        if(n%2 == 0){
            n /= 2;
        }
        else{
            n = (3*n+1)/2;
        }
        count ++;
    }
    printf("%d",count);
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
全部评论

相关推荐

鼗:四级有点难绷,感觉能拿国家励志奖学金,学习能力应该蛮强的,四级确实不重要,但是拿这个卡你可是很恶心啊
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务