B. 3n+1问题(循环)
题目描述
对任意大于1的自然数n,若n为奇数,则变为3n+1;若n为偶数,则变为n/2。经过若干次变换,n一定会变为1,求变换的次数。例如:3->10->5->16->8->4->2->1,变换次数为7。
输入
第一行输入整数t(1<=t<=100)表示数据的组数,第二行输入t个大于1的自然数n(1<=n<=100)(以空格分隔)。
输出
对每个n,输出变换的次数(以空格分隔)。
样例查看模式
正常显示
查看格式
输入样例1
3
2 3 4
输出样例1
1 7 2
#include<stdio.h>
int main()
{
int t,i,n,count;
scanf("%d", &t);
for (i = 0; i < t; i++)
{
count = 0;
scanf("%d", &n);
while (1)
{
if (n % 2 == 0)
{
n =n/ 2;
count++;
}
else
{
n = n * 3 + 1;
count++;
}
if (n == 1)
{
break;
}
}
printf("%d ", count);
}
return 0;
}
注意输入n=1的情况