//Memory Time
//164K 16MS
题意分析:按照给定规则:1.input n
2. print n
3. if n = 1 then STOP
4. if n is odd then n <-- 3n+1
5. else n <-- n/2
6. GOTO 2
找出i和j之间的循环的最大长度。
代码:
#include<stdio.h>
#include<stdlib.h>
int Cyclelen(int);
int main(){
int i,j,k,temp,max,t;
int i1,j1;
while((scanf("%d%d",&i,&j))!=EOF)
{
i1=i;
j1=j;
max=0;
if(i>j)
{
temp=i;
i=j;
j=temp;
}
for(k=i;k<=j;k++)
{
t=Cyclelen(k);
if(t>max)
max=t;
}
printf("%d %d %d\n",i1,j1,max);
}
//system("pause");
return 0;
}
int Cyclelen(int n)
{
int c=1;
while(1)
{
if(n==1)
break;
else if(n%2!=0)
n=n*3+1;
else
n=n/2;
c++;
}
return c;
}