问题标题: 酷町堂:1798万变不离1

0
0
已解决
宣雨楠
宣雨楠
高级守护
高级守护

题目描述 Description

有一个著名的猜想,叫做角谷猜想,通俗地讲内容是这样的:任意给定一个正整数n,当n是偶数时,将它除以2,即将它变成n/2;当n是奇数时,就将它变成3n+1,……,若干步后,总会得到1。
我们要求经过几次变化,1这个数字是第一次出现。

输入描述 Input Description

输入一个正整数n

输出描述 Output Description

输出第一次出现1需要变化的次数

样例输入 Sample Input

6

样例输出 Sample Output

8

数据范围及提示 Data Size & Hint

数字的变化过程如下:
6–6÷2–3--3×3+1–10–10÷2–5--5×3+1–16–16÷2–8--8÷2–4--4÷2–2--2÷2–1
一共变化了8次。

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


0
已采纳
孙楷航
孙楷航
资深光能
资深光能

核心

while(题目条件){

如果是奇数{

n=3*n+1;

}

如果是偶数{

n/=2;

}

如果n是1{

退出;

}

计数;

}

0
朱小川
朱小川
缔造者
缔造者

while循环

循环套选择结构

0
张展嘉
张展嘉
新手天翼
新手天翼

 

int b1=0,c=0;

cin>>c;

while(c!=1){

if(c%2==0){

c=c/2;

}else if(c%2!=0){

c=3*c+1;

}

b1++;

}

cout<<b1;

我要回答