溢出问题
/*猜想对于任意大于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; }