问题标题: 酷町堂:3944   数字漩涡

0
0
已解决
李玥仑
李玥仑
中级光能
中级光能

3944   数字漩涡

经验值:800 时间限制:1000毫秒

题目描述 Description

对一个正整数,不断进行如下操作:如果它是奇数,就对它乘3再加1,如果是偶数,就除以2。最终这个整数会变成1。就像是数字落入了漩涡,最终都会被卷入漩涡中心。
现给出一个正整数n(2<=n<=1000),编程求解n要经过几次变换会变成1。

输入描述 Input Description

一个正整数n。

输出描述 Output Description

一个正整数,表示变换次数。

样例输入 Sample Input

5

样例输出 Sample Output

5

数据范围及提示 Data Size & Hint

5是奇数,乘3加1得到16,16是偶数,除以2得到8,8是偶数……
变换过程:5—>16—>8—>4—>2—>1,变换次数为5次。

 

传送门

 

错误代码:

#include<iostream>
using namespace std;
int main(){
    int n,cnt=0;
    cin>>n;
    while(1){
        if(n==1){
            break;
        }
        cnt++;
        if(n%2==0){
            n/=2;
        } 
        if(n%2==1){
            n*=3;
            n--;
        }
    }
    cout<<cnt;
    return 0;
}

 

 

我真是个笨b,这个东西我竟在4月初做了5次

李玥仑在2021-06-30 23:46:55追加了内容

@酷町侠 

这两题可以用一样的代码做

传送门1

传送门2


0
已采纳
潘艺博
潘艺博
初级天翼
初级天翼

整形  a,cnt=0;
    输入 a;
    循环 (当a 不等于 1 时){
        如果 (a%2 等于 0){
            a 除以 2(/=2) ;
            cnt 加一  ;
        }
       否则{
            a 等于 a 乘 3 加 1;
            cnt 加一 ;
        }
    }
    输出 cnt;

望采纳~

1
朱小川
朱小川
缔造者
缔造者

while(1){ if(n==1) break; if(n%2==1){ n*=3; n++; cp++; } else{ if(n%2==0) n/=2; cp++; } } cout<<cp;

核心

0
0
张添瑜
张添瑜
新手守护
新手守护

int n,cnt=0;//一个正整数n,一个计数器

cin>>n;//输入 

while(n!=1){ //当n不等于1

    if(n%2==1){ //如果n是奇数

         n=n*3+1;

    }

    else{ //如果n是偶数

        n=n/2;

    }

    cnt++;//计数器不断+1

}

cout<<cnt;

0
我要回答