38.魔法数字变换

47 阅读1分钟

链接:ac.nowcoder.com/acm/problem…
来源:牛客网

题目描述

有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1

不断重复这样的运算,经过有限步之后,一定可以得到1

牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1

输入描述:

输入一个正整数n,范围在100以内

输出描述:

输出一个整数

示例1

输入

3

输出

7

说明

3->10->5->16->8->4->2->1。总共需要7

代码

#include <bits/stdc++.h>

using namespace std;

int main(){
    int n;
    cin >> n;
    int sum = 0;
    while(1){
        if(n % 2 == 0){
            n /= 2;
            sum++;
        }
        else{
            n = n * 3 + 1;
            sum ++;
        }
        if(n == 1){
            cout << sum;
            break;
        }
    }
    return 0;
}