解题思路:
1:所给定的值如i,如果它是偶数除以2,否则乘以3加上1,如此重复若i=1,则循环停止;
2、 i的取值范围在a~n之间,求i在其范围内最长的长度;
注意几点:
1、用户输入的a与n的值大小不确定可能需要交换值;
2、求其范围内最长的长度,则需先求出其范围内每个取值所会有的长度(计数)count,与其预定的最长长度sum比较若count>sum,则令count=sum,循环多次比较,即可得到范围内最大的长度
3、多次数值测试
#include<stdio.h>
int main()
{
int a,b,t,count;
while(scanf("%d %d",&a,&b))
{int max=0;
if(a>b)
{
t=a;a=b;b=t;
}
for(int i=a;i<=b;i++)
{
int m=i;
count=1;
while(m-1)// m=1时停止
{
if(m==1)
return 1;
else if(m%2==1)
m=m*3+1;
else
m=m/2;
count++;
}
if(max<count)
max=count;
}
printf("%d %d %d",a,b,max);
}
return 0;
}
|