#include <stdio.h>
int main()
{
int n,x=0;
scanf("%d",&n);
long long sum=n;
while(sum>1)
{
if(sum%2==1)
sum=sum*3+1;
else
sum=sum/2;
x++;
}
printf("%d",x);
return 0;
int main()
{
int n,x=0;
scanf("%d",&n);
long long sum=n;
while(sum>1)
{
if(sum%2==1)
sum=sum*3+1;
else
sum=sum/2;
x++;
}
printf("%d",x);
return 0;
}
这个问题容易在思路上出错,在没有long long的条件下的测试案例987654321的结果是1,跟实际情况不符合。
unsigned int 0~4294967295
int -2147483648~2147483647
unsigned long 0~4294967295
long -2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615