Description
任给一个正整数n,如果n为偶数,就将它变为n/2,如果为奇数,则将它乘3加1(即3n+1)。不断重复这样的运算,经过有限步后,一定可以得到1 。
Input
输入1个正整数n(n <= 10^10)(多组数据)
Output
输出变化的次数(每组数据一行)
Sample Input
3
Sample Output
7
我最初的代码是这样的(超时了!!!)
#include<stdio.h>
int main()
{
int n,con;
while(scanf("%d",&n)!=EOF)
{
con = 0;
while(n!=1)
{
con++;
if(n%2==0) n = n/2;
else n = 3*n+1;
}
printf("%d\n",con);
}
return 0;
}
然后一直报时间超时的错误,原来我用的一直是int类型的数据,而题目说
n <= 10^10,所以将int改为long long 就可以了;
错误反省:没有看清题目的要求