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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值