问题描述:
对于任意大于1的自然数n,若n为奇数,则n=3*n+1,否则n=n/2。经过若干次变换,则n一定会变会1
例如:6->3->10-> 5-> 16-> 8-> 4-> 2-> 1
要求:
输入n,输出的变换次数,n<=10^9;
说明:
int范围为: -2147483628 -2147483647 即2*31 ~ 2*31-1
long long范围为2^63 ~ 2^63-1唯一的区别就是将%d改为%lld但有些地方需要写成%I64d
这dev中,这两种写法都可以。
#include<stdio.h>
int main()
{
long long n;
//int n; long long n2=n;
int count=0;//循环次数
scanf("%I64d",&n);
while(n>1)
{
if(n%2==0)
n=n/2;
else
n=3*n+1;
count++;
//printf("%d %d\n",n,count);
}
printf("%d\n",count);
return 0;
}