当前位置: 首页 > 工具软件 > 3n1b > 使用案例 >

B. 3n+1问题(循环)

陶腾
2023-12-01
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的情况

 类似资料: