1039: The 3n + 1 problem
算两个数之间,所有数长度的,最值
样例输入
1 10
100 200
201 210
900 1000
样例输出
1 10 20
100 200 125
201 210 89
900 1000 174
求最值
k = 0;
for
{
k=k>=leng?k:leng;
}
#include<stdio.h>
int main()
{
int a,b,t,n,leng,k;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d %d",a,b);//先输出,保证了 a , b 的值不会变
if(a>b)//因为我们不知道i和j的大小关系,因此必须做下转换。
{
t=a;
a=b;
b=t;
}
k=0;//用来存放长度
for(;a<=b;a++)//范围
{
n=a;//替换简洁
leng=1;//调整个数
while(n!=1)//求每一个的长度
{
if(n%2)
n=3*n+1,leng++;
else
n=n/2,leng++;
}
k=k>=leng?k:leng;//for+三元判断,循环比较
}
printf(" %d\n",k);
}
return 0;
}