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

0
0
已解决
邵逸儒
邵逸儒
中级天翼
中级天翼

1798   万变不离1

题目描述 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次。

@酷町喵~o( =∩ω∩= )o~ 

@葛新 

@梁锦程 

@陆麟瑞 


1
已采纳
杨陈卓
杨陈卓
新手天翼
新手天翼

定义整型变量n,i=0;

输入n;

核心代码

    while (n!=1)
    {
        if (n%2==1)
            n=n*3+1;
        else
            n=n/2;
        i++;
    }

最后输出i即可

1
陆麟瑞
陆麟瑞
资深天翼
资深天翼

while循环,每次变化一个变量,在判断是否为偶数或奇数,再分别做一些操作。

ans一开始为0

while(n!=1)//当n不为一时后循环
    {
        if(n%2==0)//如果它是偶数
        {
            n/=2;
        }
        else{//如果它是奇数
            n=3*n+1;
        }
        ans++;//增加一次操作
    }

0
0
梁锦程
梁锦程
高级光能
高级光能
while(n!=1)// 当n!=1时满足要求
    {
        num++;//累计变化的次数
        if(n%2==0)//当n是偶数时,将它除以2,即将它变成n/2
            n/=2;
        else//当n是奇数时,就将它变成3n+1
        {
            n*=3;
            n+=1;
        }
    } 

 

我要回答