真心不想说什么,这道题注意i不一定比k小,而且还得按原顺序输出i和k。数据是很水的,在我的电脑上i=1;k=1000000时要等3s左右,在hdu上居然为0s。无语ing。
#include<stdio.h>
int main()
{
__int64 count,max,i,k,j,t,f;
while(scanf("%I64d%I64d",&i,&k)==2)
{ f=0;
if(i>k)
{t=i;
i=k;
k=t;
f=1;
}
max=0;
for(j=i;j<=k;j++)
{ count=0;t=j;
while(t!=1)
{ count++;
if(t%2==0)
t=t/2;
else t=t*3+1;
}
if (count+1>max)
max=count+1;
}
if(f)
printf("%I64d %I64d %I64d\n",k,i,max);
else printf("%I64d %I64d %I64d\n",i,k,max);
}
return 0;
}