描述
猜想:对于任意大于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<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<string.h>
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型数据的范围