1039: The 3n + 1 problem(c语言)

问题

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;
}

猜你喜欢

转载自blog.csdn.net/qq_51907130/article/details/111565122
今日推荐