3n+1

描述

猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1。例如3->10->5->16->8->4->2->1。

 
输入n ,输出n变换的次数。N<=1000000000

 

输入

输入一个N

输出

输出n变为1的次数

样例输入

3

样例输出

7

#include
#include
#include
#include
#include
using namespace std;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int num=0;
        long long int tem;
        tem = n;
        while(tem>1)
        {
            if(tem%2!=0) tem = 3*tem+1;
            else tem/=2;
            num++;
        }
        printf("%d\n",num);
    }
    return 0;
}

这里要注意的是在while循环里使用long long int 类型的数据代替了n进入了while循环,因为在执行while循环的时候数据是会溢出的,注意最大数据取到了N<=1000000000,这会超过int型数据的范围

你可能感兴趣的:(简单数学)