问题
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++;elsen=n/2,leng++;}k=k>=leng?k:leng;//for+三元判断,循环比较}printf(" %d\n",k);}return 0;
}