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