PAT乙级1001题 害死人不偿命的(3n+1)猜想 (15 分)——C
题目描述
解决思路
- 首先看题目了解到n只需要两步即可处理
- 其次又看到了n的条件,是正整数且不超过1000(以为是个限制条件,写代码时加了限制,结果并没有过,去掉了限制条件就通过了)
代码如下
#include <stdio.h>
int main(int argc,char *argv[])
{
int n = 0;
int count=0;
scanf("%d",&n);
while(n!=1)
{
if(n%2 == 0)
{
n = n/2;
count++;
}
else if(n%2 == 1)
{
n = (3*n+1)/2;
count++;
}
}
printf("%d",count);
return 0;
}
总结
- 以为会有负数之类的参数输入,来检测程序的运行范围,没想到是我想多了,毕竟是入门级题目,目前应该不会考虑这么多条件
- 代码还有值得优化的地方,不过现在这个样子比较容易理解,就暂时不改了