标签:
第一部分:题目
第一行是一个整数T.表示输入数据的组数.
第二行是T个正整数n.
对于每个正整数n,每行输出一个数s,表示n通过多少步变换会变成1,如果n无法变成1,则输出-1.
3
1 2 3
0
1
7
1 <= T <= 100
1 <= n <= 10000
第二部分:思路
个人发现这题的测试数据不够完善,当一个数字不能变成1的时候,输出-1,我的程序没有这一判断,居然AC了。但是问题来了,怎么判断一个数不能变成1呢?我的代码还没有实现
第三部分:代码(有缺陷)
#include<stdio.h> int main() { int t,n,count; scanf("%d",&t); while(t--) { count=0; scanf("%d",&n); while(n!=1) { if(n%2!=0) { n=n*3+1; } else { n/=2; } count++;//记录转换次数 } printf("%d\n",count); } return 0; }
3038 3n+1问题——http://codevs.cn/problem/3038/
标签:
原文地址:http://www.cnblogs.com/xiangguoguo/p/5339286.html