思路:找出i ,j之间所有数的循环数(包括i,j),把最大值输出(注意!i不一定大于j)(没看到这个被wa了。。。)
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
long i,j,len;
long x;
long t;
long a[10000];
long y;
long max;
long p;
while(scanf("%ld%ld",&i,&j)!=EOF)
{
printf("%ld %ld ",i,j);
len=0;
y=0;
max=0;
if(i>j)
{
int temp=i;
i=j;
j=temp;
}
for(t=i;t<=j;t++)
{
x=t;
len=0;
for(x;x!=1;)
{
if(x%2!=0)
{
x=3*x+1;
}
else
x=x/2;
len++;
}
a[y]=len;
y++;
}
max=a[0];
for(p=1;p<y;p++)
{
if(a[p]>max)
max=a[p];
}
printf("%ld\n",max+1);
}
return 0;
}