zl程序教程

您现在的位置是:首页 >  其他

当前栏目

uva 100 The 3n+1 problem

2023-03-14 10:17:33 时间
题目链接:
http://www.programming-challenges.com/pg.php?page=studenthome
/*
   The 3n+1 problem
   计算每个数的循环节长度,求给定区间的循环节长度的最大值。
*/
#include<iostream>
#include<stdio.h>
using namespace std;
int jk(int n)
{
    int num=1;
    while(n!=1)
    {
        if(n&1)
            n+=(n<<1)+1;
        else
            n=n>>1;
        num++;
    }
    return num;
}
int main()
{
    int x,y,i;
   // freopen("./pcio/110101.inp","r",stdin);
    while(scanf("%d %d",&x,&y)!=EOF)
    {
        int xx=x,yy=y;
        if(x>y)
            swap(x,y);
        int max=0;
        for(i=x; i<=y; i++)
        {
            if(jk(i)>max)
                max=jk(i);
        }
        printf("%d %d %d\n",xx,yy,max);
    }
    return 0;
}