/*猜想对于任意大于1的自然数n,若n为奇数,
则将n变为3n+1,否则将n变为一半,求变换的次数  其中n<10^9
开始不用长整形的时候会溢出,但是还可以用double解决这个问题刘汝佳
教我的*/
/*
//法1  长整形法
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    __int64 n,count = 0;
    while(scanf("%I64d",&n)!=EOF)
    {
        while(n>1)
        {
            if(n%2==1)
                n=n*3+1;
            else
                n/=2;
            count++;
        }
        printf("%I64d\n",count);
        count=0;
    }
    return 0;
}*/
//法2   double法
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int count = 0;
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        while(n>1)
        {
            if(n%2==1)
            {
                n=(double)n/2*3+1;
                count+=2;
                continue;
            }
            else
                n/=2;
            count++;
        }
        printf("%d\n",count);
        count=0;
    }
    return 0;
}

 

相关文章:

  • 2021-06-27
  • 2021-10-23
  • 2021-10-27
  • 2021-12-22
  • 2021-08-11
  • 2021-10-08
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-13
  • 2021-11-17
  • 2022-12-23
  • 2021-05-14
  • 2021-11-01
相关资源
相似解决方案