千万注意没说n<=m,大于时要交换,但是每次输出要输出原来的顺序,所以应该先输出,又没注意,WA了2次。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
long long n,m,i,j,temp;
long long Max,num;
while(~scanf("%I64d%I64d",&n,&m))
{ Max=0;
cout<<n<<" "<<m<<" "; //先输出
if(n>m) //此时要交换
{
temp=n;
n=m;
m=temp;
}
for(j=n;j<=m;j++)
{
i=j;
num=1;
while(i!=1)
{
if(i%2==0)i=i/2;
else i=3*i+1;
num++;
}
if(Max<num)Max=num;
}
cout<<Max<<endl;
}
return 0;
}