第一行是一个整数T.表示输入数据的组数.
第二行是T个正整数n.
对于每个正整数n,每行输出一个数s,表示n通过多少步变换会变成1,如果n无法变成1,则输出-1.
3
1 2 3
0
1
7
1 <= T <= 100
1 <= n <= 10000
#include <cstdio>
int main(){
int n,m[200],a;
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&m[i]);
for(int j=0;j<n;j++){
a=0;
for(int k=0;k<10;k++){
if(m[j]==1){printf("%d\n",a); break;}
else if(m[j]%2==1)m[j]=3*m[j]+1;
else m[j]=m[j]/2;
a++;
k--;
}
}
return 0;
}
原文:http://www.cnblogs.com/codetogether/p/7066353.html