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

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

3944   数字漩涡

经验值:800

题目描述 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){
        
        cnt++;
        if(n%2==0){
            n/=2;
        } 
        if(n%2==1){
            n*=3;
            n--;
        }
        if(n==1){
            break;
        }
    }
    cout<<cnt;
    return 0;
}
 


0
已采纳
李牧晓
李牧晓
中级天翼
中级天翼

判断奇数时要直接用else!!!

cnt++放在n==1上面!

再按照我说的试试~

0
张帆
张帆
中级天翼
中级天翼
if(n%2==1){
    n*=3;
    n--;
}

to

else if(n%2==1){
     n*=3;
     n--;
}

 

我要回答