题目链接:
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;
}